sp: error y recibir valor del sql

13/08/2004 - 17:40 por daniel | Informe spam
hola a todos.
tengo 2 problemas con este sp.
muchas gracias.

1- da este error:
Servidor: mensaje 245, nivel 16, estado 1, procedimiento
p_existe_cuenta, línea 13
Error de sintaxis al convertir el valor varchar 'select
cuenta from cliente where cuenta = ' para una columna de
tipo de datos int.

2- para recibir un valor del sql, pongo esto:
execute @Cuenta = sp_executesql @sql
pero no funciona, como es?

les envio el sp:

CREATE PROCEDURE p_existe_cuenta
@Tabla as varchar(50),
@Campo as varchar(50),
@ValorCampo as integer
AS

if @Tabla is null or @Campo is null or @ValorCampo is null
return (1)

declare @Cuenta as integer
declare @Sql as nvarchar(200)

set @sql = 'select ' + @Campo + ' from ' + @Tabla + '
where ' + @Campo + ' = ' + @ValorCampo
execute @cuenta = sp_executesql @sql
if @Cuenta = @ValorCampo
return (1)
else
return (0)
GO

Preguntas similare

Leer las respuestas

#1 ulises
13/08/2004 - 17:54 | Informe spam
1) Usa CAST para convertir el valor de @ValorCampo de
entero a char antes de la concatenación sino va a intentar
realizar una operación de suma

CAST(@ValorCampo as varchar(20))

2) El valor @cuenta no recibirá el resultado de la
consulta, solo si se se ejecutó correctamente (0) o no
(diferente de 0).

Saludos,
Ulises


hola a todos.
tengo 2 problemas con este sp.
muchas gracias.

1- da este error:
Servidor: mensaje 245, nivel 16, estado 1, procedimiento
p_existe_cuenta, línea 13
Error de sintaxis al convertir el valor varchar 'select
cuenta from cliente where cuenta = ' para una columna de
tipo de datos int.

2- para recibir un valor del sql, pongo esto:
execute @Cuenta = sp_executesql @sql
pero no funciona, como es?

les envio el sp:

CREATE PROCEDURE p_existe_cuenta
@Tabla as varchar(50),
@Campo as varchar(50),
@ValorCampo as integer
AS

if @Tabla is null or @Campo is null or @ValorCampo is null
return (1)

declare @Cuenta as integer
declare @Sql as nvarchar(200)

set @sql = 'select ' + @Campo + ' from ' + @Tabla + '
where ' + @Campo + ' = ' + @ValorCampo
execute @cuenta = sp_executesql @sql
if @Cuenta = @ValorCampo
return (1)
else
return (0)
GO
Respuesta Responder a este mensaje
#2 daniel
13/08/2004 - 18:05 | Informe spam
gracias por la respuesta.

con cast: asunto solucionado

por lo del retorno de un valor, como puedo hacer, existe
otra forma de verificar si una cuenta existe, con esta
forma de armar el sql?

muchas gracias


1) Usa CAST para convertir el valor de @ValorCampo de
entero a char antes de la concatenación sino va a


intentar
realizar una operación de suma

CAST(@ValorCampo as varchar(20))

2) El valor @cuenta no recibirá el resultado de la
consulta, solo si se se ejecutó correctamente (0) o no
(diferente de 0).

Saludos,
Ulises


hola a todos.
tengo 2 problemas con este sp.
muchas gracias.

1- da este error:
Servidor: mensaje 245, nivel 16, estado 1, procedimiento
p_existe_cuenta, línea 13
Error de sintaxis al convertir el valor varchar 'select
cuenta from cliente where cuenta = ' para una columna de
tipo de datos int.

2- para recibir un valor del sql, pongo esto:
execute @Cuenta = sp_executesql @sql
pero no funciona, como es?

les envio el sp:

CREATE PROCEDURE p_existe_cuenta
@Tabla as varchar(50),
@Campo as varchar(50),
@ValorCampo as integer
AS

if @Tabla is null or @Campo is null or @ValorCampo is




null
return (1)

declare @Cuenta as integer
declare @Sql as nvarchar(200)

set @sql = 'select ' + @Campo + ' from ' + @Tabla + '
where ' + @Campo + ' = ' + @ValorCampo
execute @cuenta = sp_executesql @sql
if @Cuenta = @ValorCampo
return (1)
else
return (0)
GO



.

Respuesta Responder a este mensaje
#3 Isaías
13/08/2004 - 18:06 | Informe spam
Hola

El store sp_executesql, tiene una forma especial para
regresar valores obtenidos o parametros enviados en la
cadena SQL ejecutada:

Vea este ejemplo:

DECLARE @SQLString NVARCHAR(100), @count INT

SET @SQLString = N'SELECT @count = COUNT
(fi_ParameterListID) FROM PARAMETER_LIST WHERE
fi_ParameterListID = ' + CONVERT(VARCHAR,
@fi_ContestListImpresora) + ' AND fc_ParameterListStatus
= 1'
EXEC sp_executesql @SQLString, N'@count int OUTPUT',
@count = @MyCount OUTPUT
IF @MyCount = 0
BEGIN
.CODIGO SQL ..
Respuesta Responder a este mensaje
#4 Gustavo Larriera [MVP]
13/08/2004 - 18:21 | Informe spam
Usa un argumento de OUTPUT para pasar un valor por referencia al sproc. Algo
parecido a esto:

CREATE PROCEDURE p_existe_cuenta
@Tabla as varchar(50),
@Campo as varchar(50),
@ValorCampo as integer,
@Resultado integer OUTPUT
AS

codigo del sproc, asignar a @Resultado el valor deseado
GO


Luego lo usas así:

DECLARE @v integer

EXEC p_existe_cuenta 'tabla', 'campo', 12, @v OUTPUT

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"daniel" wrote in message
news:5a4401c4814b$cbf0c220$
hola a todos.
tengo 2 problemas con este sp.
muchas gracias.

1- da este error:
Servidor: mensaje 245, nivel 16, estado 1, procedimiento
p_existe_cuenta, línea 13
Error de sintaxis al convertir el valor varchar 'select
cuenta from cliente where cuenta = ' para una columna de
tipo de datos int.

2- para recibir un valor del sql, pongo esto:
execute @Cuenta = sp_executesql @sql
pero no funciona, como es?

les envio el sp:

CREATE PROCEDURE p_existe_cuenta
@Tabla as varchar(50),
@Campo as varchar(50),
@ValorCampo as integer
AS

if @Tabla is null or @Campo is null or @ValorCampo is null
return (1)

declare @Cuenta as integer
declare @Sql as nvarchar(200)

set @sql = 'select ' + @Campo + ' from ' + @Tabla + '
where ' + @Campo + ' = ' + @ValorCampo
execute @cuenta = sp_executesql @sql
if @Cuenta = @ValorCampo
return (1)
else
return (0)
GO
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida