Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

sp: error y recibir valor del sql

58 views
Skip to first unread message

daniel

unread,
Aug 13, 2004, 11:40:01 AM8/13/04
to
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

ulises

unread,
Aug 13, 2004, 11:54:41 AM8/13/04
to
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


>-----Mensaje original-----

daniel

unread,
Aug 13, 2004, 12:05:15 PM8/13/04
to
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


>-----Mensaje original-----

>.
>

Isaías

unread,
Aug 13, 2004, 12:06:17 PM8/13/04
to
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 ..............

Gustavo Larriera [MVP]

unread,
Aug 13, 2004, 12:21:54 PM8/13/04
to
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" <anon...@discussions.microsoft.com> wrote in message
news:5a4401c4814b$cbf0c220$a501...@phx.gbl...

0 new messages