Ayuda con sentencia sql en tiempo de ejecución.

04/10/2004 - 22:51 por Miguel Angel Valles Coral | Informe spam
Como puedo hacer que el siguiente procedimiento (o en todo caso pasarlo a
una función), me devuelva un dato a una variable cualquiera.?, es decir
asignar el resultado de la consulta a la variable @ValorDevuelto
Estoy casi medio día en esto y ya no doy más...


CREATE PROCEDURE spp_FactValor @Tabla varchar(20), @CampoBuscado as
varchar(20) , @CampoFiltro as varchar(20), @ValorFiltro varchar(20),
@ValorDevuelto as varchar(50) output
AS
Declare @StrSql nvarchar(200) , @Cadena varchar(40)
Set @StrSql = 'Select ' + @CampoBuscado + ' from ' + @Tabla + ' where ' +
@CampoFiltro + ' = ' + @ValorFiltro
exec sp_ExecuteSQL @StrSql

Muchas gracias de antemano..

Atentamente.
 

Leer las respuestas

#1 Adrian D. Garcia
04/10/2004 - 23:35 | Informe spam
Copiado de una respuesta anterior del foro, enviado por Javier Loria:

Hola:

Este es un COPY-PASTE de un posteo de hace tiempo, espero te sirva...

No son amigo del SQL Dinamico, por mil razones y siempre que veo una
pregunta de estas recomiendo la lectura del articulo de las Virtudes y
Maldades del SQL Dinamico: http://www.algonet.se/~sommar/dynamic_sql.html
En todo caso la sintaxis seria:
=ÞCLARE @total SMALLINT
DECLARE @consulta NVARCHAR(500)
DECLARE @from VARCHAR(100)
DECLARE @where VARCHAR(100)
SET @From=' FROM authors '
SET @Where=' WHERE state=''CA'' '
set @consulta=N'select @Numero=count(*)' + @from+@where

EXEC sp_executesql @Consulta, N'@Numero INT OUTPUT', @Total OUTPUT
PRINT 'Encontre: '+CAST(@Total AS VARCHAR(6))
== La documentacion no es muy clara sobre el uso de OUTPUT.

El "truco" es en la sentencia se usa el parameto @Numero, que NO ESTA
DECLARADO en la consulta, sino que se declara como una variable OUTPUT a un
parametro adicional que se pasa al sp_executesql

Saludos,


Javier Loria


Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Miguel Angel Valles Coral" wrote in message
news:%
Como puedo hacer que el siguiente procedimiento (o en todo caso pasarlo a
una función), me devuelva un dato a una variable cualquiera.?, es decir
asignar el resultado de la consulta a la variable @ValorDevuelto
Estoy casi medio día en esto y ya no doy más...


CREATE PROCEDURE spp_FactValor @Tabla varchar(20), @CampoBuscado as
varchar(20) , @CampoFiltro as varchar(20), @ValorFiltro varchar(20),
@ValorDevuelto as varchar(50) output
AS
Declare @StrSql nvarchar(200) , @Cadena varchar(40)
Set @StrSql = 'Select ' + @CampoBuscado + ' from ' + @Tabla + ' where '


+
@CampoFiltro + ' = ' + @ValorFiltro
exec sp_ExecuteSQL @StrSql

Muchas gracias de antemano..

Atentamente.


Preguntas similares