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)
-   -   Consulta Proc. Almacenado (https://www.clubdelphi.com/foros/showthread.php?t=80368)

Jere_84 21-09-2012 21:58:11

Consulta Proc. Almacenado
 
Hola ClubDelphi, estoy iniciandome con los proc. almacenado utilizando la version SQL Server 2008 Express. La cuestion es que en una prueba que hice la estoy utilizanod para un listado en unos de mis prog. este es el codigo de mi proc:

Código SQL [-]
    select * from "Sueldos" 
    where CodigEmple >= @DCodigEmple and CodigEmple <= @HCodigEmple and 
       DenomEmple >= @DDenomEmple and DenomEmple <= @HDenomEmple and 
       Estad >= @DEstad and Estad <= @HEstad and
       Cuil >= @DCuil and Cuil <= @HCuil and

Lo que me gustaria hacer es agregar un order by pero que se pueda optar por uno u otro, mediante una variable bit, algo asi:

Código SQL [-]
  if @Orden = 1
    order by CodigEmple 
  else
    order by DenomEmple

Cuando le pase uno que agregue el order by al final por el campo CodigEmple caso contrario DenomEmple. Probe de agregar variables de la siguiente manera pero me da error de compilación.

Código SQL [-]
    select * from "Sueldos" 
    where CodigEmple >= @DCodigEmple and CodigEmple <= @HCodigEmple and 
       DenomEmple >= @DDenomEmple and DenomEmple <= @HDenomEmple and 
       Estad >= @DEstad and Estad <= @HEstad and
       Cuil >= @DCuil and Cuil <= @HCuil and 
    order by @vCampo <------ Esto no esta permitido.

gatosoft 17-10-2012 05:43:02

Hola Jere_84,

(Varias semans después, pero....)

Creo que la respuesta a tu pregunta puede estar por el lado de la ejecución de sentencias dinámicas

Por ejemplo, puese armar una sentencia donde el nombre d ela tabla, el campo y el valor de la condicion sean variables

SET @sql = "SELECT xxx FROM " + @tabla + " WHERE " + @campo + " = " + @ValorBuscar

y luego ejecutarlo con:

EXECUTE (@query)

o con...

EXEC sp_executesql @sql


Bueno no estoy muy seguro de la segunda opción, porque no tengo SQL server a mano para probar, pero la idea es esa.

bye


La franja horaria es GMT +2. Ahora son las 16:41:58.

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