FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta en Sql con la sentencia IN?
Hola a todos los del foro. Tengo una duda en cuanto a una sentencia de un procedimiento almacenado el codigo en sql es el siguiente:
code sin parametro _____________________________________ ALTER PROCEDURE TrakingSalida as SELECT Guia.OficinaDestino, Guia.CiudadOrigen, Paquete.NumeroRelacion, Paquete.UbicacionPaquete, Paquete.EstadoPaquete, Paquete.CodigoPaquete, Guia.TotalPeso, Guia.TipoDeEnvio, Guia.Codigo FROM Guia FULL OUTER JOIN Paquete ON Guia.Codigo = Paquete.CodigoGuia WHERE (Guia.OficinaDestino IN ('venezuela', 'españa', 'argentina', 'peru')) ______________________________________ Este codigo si me funciona el detalle esta cuando quiero pasarle el parametro code Com parametro _____________________________________ ALTER PROCEDURE TrakingSalida @OficinaDestino varchar(20) as SELECT Guia.OficinaDestino, Guia.CiudadOrigen, Paquete.NumeroRelacion, Paquete.UbicacionPaquete, Paquete.EstadoPaquete, Paquete.CodigoPaquete, Guia.TotalPeso, Guia.TipoDeEnvio, Guia.Codigo FROM Guia FULL OUTER JOIN Paquete ON Guia.Codigo = Paquete.CodigoGuia WHERE (Guia.OficinaDestino IN (@OficinaDestino)) ______________________________________ El parametro lo tengo a traves de un edit Datamodule2.TrakingSalida.Close; Datamodule2.TrakingSalida.Parameters[1].Value:=Edit1.Text; Datamodule2.TrakingSalida.Open; en el edit escribo lo mismo que en el codigo anterio 'venezuela', 'españa', 'argentina', 'peru' y no funciona mi pregunta es como escribo la lista? ayuda. __________________________________ Un saludo a todos.... |
#2
|
||||
|
||||
Si mal no te entendí, vas a tener que tener tantos parámetros como items dentro del paréntesis
Código:
WHERE Guia.OficinaDestino IN (:P1, :P2, :P3, :P3) Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Gracias por responder delphi.com.ar. lo que trato de hacer es que con un solo parametro armo un string 'venezuela', èspaña'.
Lo que tu me dices es que por ciuda debo tener declarado un parametro en mi procedimiento almacenado. pero el problema es que es muy variable por que aveses necesito realizar busquelas por 2 paises o por 8 o mas. como hago? |
#4
|
||||
|
||||
Cita:
PD: Si mal no recuerdo hay un tipo de parámetro del tipo array, el cual desconozco, dudo de que sirva para esto, pero te recomiendo investigarlo. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
Hola.
Yo lo que haría es pasarle una sola ciudad cada vez y utilizar el SP como una tabla, que puedes incluir en el from, de una consulta en la que haría la selección, y que llamaría directamente desde mi aplicación. Ejemplo: Código:
ALTER PROCEDURE TrakingSalida @OficinaDestino varchar(20) as SELECT Guia.OficinaDestino, Guia.CiudadOrigen, Paquete.NumeroRelacion, Paquete.UbicacionPaquete, Paquete.EstadoPaquete, Paquete.CodigoPaquete, Guia.TotalPeso, Guia.TipoDeEnvio, Guia.Codigo FROM Guia FULL OUTER JOIN Paquete ON Guia.Codigo = Paquete.CodigoGuia WHERE (Guia.OficinaDestino IN (@OficinaDestino)) SUSPEND; Código:
SELECT TS.* FROM TRAKINGSALIDA TS WHERE TS.OFICINADESTINO IN ('VENEZUELA','PERU') Saludos
__________________
[Aprendiz]: Por que siempre hay algo nuevo que aprender. |
#6
|
|||
|
|||
Gracias por responder aprendiz. como hago para pasarle el codigo del Where al SP?
|
#7
|
|||
|
|||
Creo que no lo necesitas, tal como te he planteado la consulta desde la parte en delphi al pasarselo directamente en el IN de la consulta el ya lo iría recogiendo y pasandolo como parámetro uno a uno al SP.
En caso que no funcionase, no tengo experiencia con el gestor que utilizas, puedes hacer la llamada pasándole el parámetro en el where de la consulta, si hubiese más de uno de construyes dinámicamente la parte del where en la consulta (no en el SP). El objetivo es pasar un solo parámetro cada vez al SP. Original: Código:
WHERE TS.OFICINADESTINO IN ('VENEZUELA','PERU') Código:
WHERE TS.OFICINADESTINO('VENEZUELA') or TS.OFICINADESTINO('PERU') Saludos
__________________
[Aprendiz]: Por que siempre hay algo nuevo que aprender. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|