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
 

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

Preguntas similares