Ayuda con un SP

06/05/2010 - 00:04 por Limberg | Informe spam
Tengo este SP, deseo que en el parametro de salida @TotalReg, retorne la
cantidad de registo que cumple con la condicion del filtro @Filtro.

ALTER PROCEDURE [dbo].[pAlmacenFiltro]
@Filtro VARCHAR(200),
@TotalReg BIGINT OUTPUT
AS
BEGIN
DECLARE @StrSQL VARCHAR(2500)
SELECT @StrSQL = 'SELECT @TotalReg = COUNT(*) FROM tbalmacenes WHERE
'+@Filtro
EXEC(@StrSQL)
END

Intento ejecutarlo desde una ventana de consulta con esta sentencia:

DECLARE @TotalReg BIGINT
EXEC pAlmacenFiltro "TRUE", @TotalReg OUTPUT

Pero me da el siguiente mensaje de error:

Mens. 137, Nivel 15, Estado 1, Lnea 1
Debe declarar la variable escalar "@TotalReg".


Al parecer estoy asignando mal la variable @StrSQL

Saludos,
Limberg.



__________ Information from ESET NOD32 Antivirus, version of virus signature database 5089 (20100505) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com

Preguntas similare

Leer las respuestas

#1 Ele
06/05/2010 - 01:37 | Informe spam
Hola usa el procedimiento "sp_executesql" te paso un ejemplo , aunque que no
es tan eficiente con los indices, por lo que recomiendan no hacer uso de
este procedimiento para queries pesados, supongo que estas limitado a usar
esto porque las condiciones del where estan concatenadas en el parametro
@Filtro para solucionar esto debes enviar cada parametro y hacer caso por
caso, espero te sirva
suerte
DECLARE @StrSQL VARCHAR(2500)

,@Filtro VARCHAR(200)

,@TotalReg BIGINT

Select @Filtro = ''

SELECT @StrSQL = 'SELECT @Cant = COUNT(*) FROM tbalmacenes WHERE

'+@Filtro

Exec sp_executesql @StrSQL , N'@Cant int output', @TotalReg output

Select @TotalReg

go

"Limberg" escribió en el mensaje
news:
Tengo este SP, deseo que en el parametro de salida @TotalReg, retorne la
cantidad de registo que cumple con la condicion del filtro @Filtro.

ALTER PROCEDURE [dbo].[pAlmacenFiltro]
@Filtro VARCHAR(200),
@TotalReg BIGINT OUTPUT
AS
BEGIN
DECLARE @StrSQL VARCHAR(2500)
SELECT @StrSQL = 'SELECT @TotalReg = COUNT(*) FROM tbalmacenes WHERE
'+@Filtro
EXEC(@StrSQL)
END

Intento ejecutarlo desde una ventana de consulta con esta sentencia:

DECLARE @TotalReg BIGINT
EXEC pAlmacenFiltro "TRUE", @TotalReg OUTPUT

Pero me da el siguiente mensaje de error:

Mens. 137, Nivel 15, Estado 1, Lnea 1
Debe declarar la variable escalar "@TotalReg".


Al parecer estoy asignando mal la variable @StrSQL

Saludos,
Limberg.



__________ Information from ESET NOD32 Antivirus, version of virus
signature database 5089 (20100505) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com




Respuesta Responder a este mensaje
#2 Limberg
07/05/2010 - 22:44 | Informe spam
Gracias Ele.

Saludos,
Limberg.


"Ele" escribió en el mensaje
news:
Hola usa el procedimiento "sp_executesql" te paso un ejemplo , aunque que
no es tan eficiente con los indices, por lo que recomiendan no hacer uso
de este procedimiento para queries pesados, supongo que estas limitado a
usar esto porque las condiciones del where estan concatenadas en el
parametro @Filtro para solucionar esto debes enviar cada parametro y hacer
caso por caso, espero te sirva
suerte
DECLARE @StrSQL VARCHAR(2500)

,@Filtro VARCHAR(200)

,@TotalReg BIGINT

Select @Filtro = ''

SELECT @StrSQL = 'SELECT @Cant = COUNT(*) FROM tbalmacenes WHERE

'+@Filtro

Exec sp_executesql @StrSQL , N'@Cant int output', @TotalReg output

Select @TotalReg

go

"Limberg" escribió en el mensaje
news:
Tengo este SP, deseo que en el parametro de salida @TotalReg, retorne la
cantidad de registo que cumple con la condicion del filtro @Filtro.

ALTER PROCEDURE [dbo].[pAlmacenFiltro]
@Filtro VARCHAR(200),
@TotalReg BIGINT OUTPUT
AS
BEGIN
DECLARE @StrSQL VARCHAR(2500)
SELECT @StrSQL = 'SELECT @TotalReg = COUNT(*) FROM tbalmacenes WHERE
'+@Filtro
EXEC(@StrSQL)
END

Intento ejecutarlo desde una ventana de consulta con esta sentencia:

DECLARE @TotalReg BIGINT
EXEC pAlmacenFiltro "TRUE", @TotalReg OUTPUT

Pero me da el siguiente mensaje de error:

Mens. 137, Nivel 15, Estado 1, Lnea 1
Debe declarar la variable escalar "@TotalReg".


Al parecer estoy asignando mal la variable @StrSQL

Saludos,
Limberg.



__________ Information from ESET NOD32 Antivirus, version of virus
signature database 5089 (20100505) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com









__________ Information from ESET NOD32 Antivirus, version of virus
signature database 5089 (20100505) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com








__________ Information from ESET NOD32 Antivirus, version of virus signature database 5096 (20100507) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida