Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Pasar parametro como campo en un SP (https://www.clubdelphi.com/foros/showthread.php?t=66636)

lgarcia 04-03-2010 16:09:19

Pasar parametro como campo en un SP
 
Hola:

Trabajo con MS SQL Server 2000 y tengo la siguiente problematica, tengo una tabla que tiene el plan de los diferentes meses del año y los nombres de los campos corresponden con los meses del año. Necesito por ejemplo hacer una consulta como esta:

Código SQL [-]
SELECT nombre, Enero
FROM dbo.Ingresos

para que me de el valor correspondiente al mes de enero, como yo podria pasar un parametro que me sustituyera el nombre del campo. Por ejemplo

Código SQL [-]
DECLARE @valor char(12)
SET @valor = 'Enero'

SELECT nombre, @valor
FROM dbo.Ingresos

Para de esta forma solo pasarle como parametro el nombre del campo y me devuelva el plan de ese mes en especifico. No se si me he hecho entender.

Saludos
Luis Garcia

delphi.com.ar 04-03-2010 16:31:33

Puedes hacerlo mediante el uso de Sql Dinámico. En los motores que compilan previamente el código de los stored procedures, no es recomendable por una cuestion de rendimiento, salvo que sea necesario. Te recomiendo ver la ayuda del stored procedure: "sp_executesql".


Saludos!

lgarcia 04-03-2010 18:15:10

Pasar parametro como campo en un SP
 
Muchas gracias por la respuesta Federico, voy a trabajar en esa via, yo en un proyecto anterior utilice un sql dinamico, pero no habia valorado esa posibilidad.

Saludos
Luis Garcia

sinalocarlos 05-03-2010 02:02:20

En caso de que no se pudiese aplicar la opcion del sql dinamico, es probable que te sirva esta opcion:

Código SQL [-]
SELECT  nombre ,
        CASE WHEN @valor = 'Enero' THEN Enero
             WHEN @valor = 'Feb' THEN Febrero
             WHEN @valor = 'Mar' THEN Marzo
             WHEN @valor = 'Abr' THEN Abril
             ...
        END AS Valor
FROM    dbo.Ingresos

donde @valor es el parametro en cuestion

Saludos


La franja horaria es GMT +2. Ahora son las 19:23:39.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi