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
 

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




Preguntas similares