uso de parámetros en procedimientos almacenados

10/11/2003 - 11:27 por Begoña Colomer | Informe spam
necesito ejecutar la siguiente sentecia:
select @cliente=count(ANI) from @pTABLA where ANI=@pANI

donde
@cliente es una variable que recoge el resultado
@pTABLA es un parámetro de entrada del procedimiento y que
corresponde al nombre de la tabla
ANI es un campo de la tabla
@pANI valor de búsqueda
He probado lo siguiente
- ejecutar directamente esta sentencia
- usar EXEC (sentencia)
- exec sp_executesql sentencia
pero ninguno de ellos ha funcionado
¿Cómo podría solucionar este problema??

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
10/11/2003 - 12:18 | Informe spam
Si quieres recoger resultados de la consulta y ésta debe ser usada
dinámicamente, debes usar SP_EXECUTESQL con parámetros de salida. Mira en
los BOL, pues vienen ejemplos de su uso



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)
MVP SQL Server
Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Begoña Colomer" escribió en el mensaje
news:061701c3a775$2f4e2ad0$
necesito ejecutar la siguiente sentecia:
select @cliente=count(ANI) from @pTABLA where ANI=@pANI

donde
@cliente es una variable que recoge el resultado
@pTABLA es un parámetro de entrada del procedimiento y que
corresponde al nombre de la tabla
ANI es un campo de la tabla
@pANI valor de búsqueda
He probado lo siguiente
- ejecutar directamente esta sentencia
- usar EXEC (sentencia)
- exec sp_executesql sentencia
pero ninguno de ellos ha funcionado
¿Cómo podría solucionar este problema??
Respuesta Responder a este mensaje
#2 Javier Loria
10/11/2003 - 12:23 | Informe spam
Hola:
Hay mil razones por las cuales no deberias hacer esto, particularlmente
porque tiene problemas de seguridad, desempeno, mantenimiento y aun cuando
en otros lenguages (C++, VB, Java, etc.) este tipo de parametrizacion es
deseable no lo es en SQL. Si te interesa SQL Dinamico puedes leer el
siguiente articulo de un conocido MVP:
http://www.algonet.se/~sommar/dynamic_sql.html

En todo caso si decides hacerlo debes optar por sp_executesql, lo construyo
alrededos de PUBS:
/***** SQL Dinamico *****/
/*** No use esto en casa ***/
DECLARE @sql nvarchar(4000)
DECLARE @Cliente INT
DECLARE @Tabla Sysname
DECLARE @Valor CHAR(2)
SET @Tabla='Authors'
SET @Valor='CA'

SELECT @sql=N'SELECT @Cliente=COUNT(STATE) FROM '+@Tabla+' WHERE
STATE='''+@Valor+''''
PRINT @SQL

EXEC sp_executesql @sql, N'@Cliente INT OUTPUT', @Cliente OUTPUT

SELECT @Cliente
/***** SQL Dinamico *****/

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Begoña Colomer escribio:
necesito ejecutar la siguiente sentecia:
select @cliente=count(ANI) from @pTABLA where ANI=@pANI

donde
@cliente es una variable que recoge el resultado
@pTABLA es un parámetro de entrada del procedimiento y que
corresponde al nombre de la tabla
ANI es un campo de la tabla
@pANI valor de búsqueda
He probado lo siguiente
- ejecutar directamente esta sentencia
- usar EXEC (sentencia)
- exec sp_executesql sentencia
pero ninguno de ellos ha funcionado
¿Cómo podría solucionar este problema??
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida