Ayuda con SP

06/05/2010 - 00:02 por Limberg | Informe spam
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

Tengo este SP, deseo que en el parametro de salida @TotalReg, retorne la
cantidad de registo que cumple con la condicion del filtro @Filtro.
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

#6 Daniel Ulfe
06/05/2010 - 15:45 | Informe spam
Estas usando SQL dinamico... la variable "@TotalReg" esta definida en el
SP... pero NO es valida dentro del contexto de ese SQL. (2 contextos
diferentes)

Una alternativa seria el crear una tabla temporal
(http://www.sqlteam.com/article/temporary-tables)... en el SP, en el SQL
dinamico insertar el valor "COUNT(*)" en esa tabla... y despues leerla
en el SP.

En otras palabras... esa tabla temporal seria como un "buffer" o
"gateway" entre el SP y el SQL Dinamico.

Daniel.

On 5/5/2010 6:02 PM, Limberg wrote:
Mostrar la cita
#7 Alberto Poblacion
06/05/2010 - 16:13 | Informe spam
"Daniel Ulfe" wrote in message
news:
Mostrar la cita
Hay otra forma más eficiente, que consiste en ejecutar sp_executesql con
un parámetro de salida. Puse el código completo en otro mensaje, pero por
alguna razón incomprensible, el mensaje no aparece en las news. Lo he
enviado varias veces, no solo por nntp, sino también a través del foro web.
Este último sí que aparece, pero solo en la web, no en las news.
#8 Daniel Ulfe
06/05/2010 - 19:09 | Informe spam
Tienes toda la razon...

Limberg en esta pagina hay ejemplos de lo que Alberto indica.

http://msdn.microsoft.com/en-us/lib...88001.aspx

Daniel.

On 5/6/2010 10:13 AM, Alberto Poblacion wrote:
Mostrar la cita
#9 Limberg
07/05/2010 - 19:02 | Informe spam
Gracias a todos por sus recomendaciones,
Estoy intentando hacer correr el SP de Alberto, pero tengo un mensaje de
error:
Podrían decirme a que se debe este mensaje?
Mens 214, Nivel 16, Estado 2, Procedimiento sp_executesql, Lnea 1

El procedimiento espera un parmetro '@statement' de tipo
'ntext/nchar/nvarchar'.

Saludos,
Limberg.



"Limberg" escribió en el mensaje
news:
Mostrar la cita
__________ Information from ESET NOD32 Antivirus, version of virus signature database 5095 (20100507) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
#10 Limberg
07/05/2010 - 21:58 | Informe spam
Gracias a todos, ya está solucionado, habia copiado mal esta linea:

DECLARE @StrSQL NVARCHAR(2500)

Saludos,
Limberg.



"Limberg" escribió en el mensaje
news:
Mostrar la cita
__________ Information from ESET NOD32 Antivirus, version of virus signature database 5096 (20100507) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
Ads by Google
Search Busqueda sugerida