Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   concatenar un parametro a un select en un Store procedure ... ? (https://www.clubdelphi.com/foros/showthread.php?t=67405)

ingel 15-04-2010 18:28:14

concatenar un parametro a un select en un Store procedure ... ?
 
HOla a todos .. se podra hacer esto ? ....

Desde delphi llamo a un StoreProc de Sql2000 con varios paramentros ...
uno de ellos es un string con contiene por ejemplo
@parametro2= ' and CAMPO2='HOLA' '

Dentro del SP tengo definido un select .. por ejemplo

Código:

set @var1= (Select XX  from TABLA where CAMPO1='1')
Ahora bien .. le quiero AGREGAR como condicion el string que viene en el parametro .. cosa que quede :

Código:

set @var1=(Select XX from TABLA where CAMPO1='1' and CAMPO2='HOLA')
peero estimo que no puedo hacer algo tan simple como

Código:

set @var1=(select XX from TABLA where CAMPO='1' +@parametro2)
porque lo concatena al '1' y no lo evalua como condicion ....
y si encierro la primera condicion entre parentesis me da error de sintaxis..

Gracias a todos por su tiempo y ayuda
sds

delphi.com.ar 15-04-2010 18:41:56

Cita:

Empezado por ingel (Mensaje 360633)
Código:

set @var1=(select XX from TABLA where CAMPO='1' +@parametro2)

En este caso, @parametro2 contendría "and CAMPO2='HOLA'" ?...

Si es así hay dos formas de hacerlo:
  1. mediante un SQL Dinámico, algo que suele ser bastante inóptimo, ya que el motor deberá compilar el código del procedure mas el código dinámico por separado. Es muy útil cuando la consulta cambiará radicalmente.
  2. Mediante un campo que si es nulo o tiene cierto valor no lo tomes en cuenta, por ejemplo:
    Código SQL [-]
    set @var1=(select XX from TABLA where CAMPO='1' AND (@parametro2 IS NULL OR CAMPO2 = 'HOLA')


Saludos!

ingel 15-04-2010 19:03:12

no da error pero ...
 
Hola Federico ...
Estoy probando lo que me sugeris en el Query analizer ...
el codigo quedo algo asi ....

Código SQL [-]
declare @var varchar(50)
declare @res varchar(10)

set @var = ' and EMPLEADO=158'

set @res=  ( select top 1 CARACTER from TABLA where  serie='A' 
and (@var IS NULL ))
print @res

pero @var No es Null ...

yo necesitaria solo :

Código SQL [-]
set @res=  ( select top 1 CARACTER from TABLA where  serie='A' 
and (@var ))

:D ... pero da error ... :(

Gracias...

delphi.com.ar 15-04-2010 19:06:36

En ese caso yo me refería a hacer una solución de este tipo:
Código SQL [-]
declare @emp BigInt
declare @res varchar(10)

set @emp = 158

set @res=  ( select top 1 CARACTER from TABLA where  serie='A' 
and (@emp IS NULL OR EMPLEADO = @emp ))
print @res

Entonces si quieres que se evalúe la condición, debes pasarle el id de empleado, sino se lo pasas como NULL.

Saludos!

ingel 16-04-2010 13:07:44

HOla...
Lo que pasa Federico es que en realidad lo que varia es la condicion de WHERE , no es que le paso solo el valor del parametro.. supone .. a veces es :

Where "grupo = 1 or grupo = 2"

otra es :

where "especialidad = 1 and grupo = 3 and zona=4"

ese WHERE lo armo desde el programa delhpi y lo paso ENTERO como
parametro (campos+valores SIN la palabra WHERE porque en el SP tengo otras condiciones ) ... entonces esto que le paso se lo quiero AGREGAR para que lo evalue junto con la condicion original del select ..

Sds . Gracias por tu ayuda !


La franja horaria es GMT +2. Ahora son las 13:08:41.

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