FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Parametros en IN del Where
Hola amigos buenas noches.
Uso DELPHI6, FireBird 2.0 Estoy tratanto de pasar como parametro una cadena tipo VarChar de 300 en un store procedure. Este el SP estoy construyendo:
Lo marcado en ROJO, se puede usar en un procedimiento almacenado?...o como le hago para se ejecute sin que marque error?? Dentro de Delphi, acumulo ciertos datos del tipo string en una variable, les pongo codigo:
Donde en la sección q deje de rojo, intento pasarle una cadena como esta: 12309102,1029301902,109239013, pero marca un error a la hora de ejecutar el SP, el mensaje de error es el siguiente: Código:
Arithmetic exception, numeric overflow, or string truncation. At procedure 'MOVTOS_MASIVOS_DOTACIONES'. Lo anterior es porque quiero pasarle todas las claves en una sola variable al SP, usando el COMANDO IN del WHERE, pero no he podido. Esto claro esta que se puede resolver si quito el FOR del SELECT....bueno quedaria asi:
La pregunta es la siguiente: Puedo hacer esto dentro del WHERE para usar IN, de esta forma: ej. where CODIGO IN (:CODIGOS) Donde CODIGOS, puediera tener la siguientes cadena: 1234,5678,19281 ??? Espero haberme explicado, sino, comentenme para ser mas explicito. Saludos y gracias por su tiempo !.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por mRoman fecha: 13-12-2015 a las 06:33:00. |
#2
|
||||
|
||||
Que yo sepa eso no se hace con parametros, en las versiones mas nuevas de de Delphi, con FireDAC incorporado creo que se puede hacer con algo que se llama "macro expand"
Pero en definitiva, lo que termina haciendo es sustituir el lugar indicado dentro del SQL por la secuencia de caracteres. No se como implementarlo dentro de un SP, pero si fuera que mandas un query desde delphi podes hacer algo asi:
Yo creo que el secreto esta en implementar esa logica dentro del stored, es decir, acumular dentro de una variable local la cadena que se va a usar en el operador IN |
#3
|
||||
|
||||
Execute Statement
Cita:
Efectivamente aplicar una lógica como la q planteas, es lo q busco, y me parece que la solucion esta en esta instruccion: EXECUTE STATEMENT Aqui esta un ejemplo. No es otra cosa mas que construir la consulta dentro del SP y concatenar cadenas....y ahi es donde se pudiera hacer lo que busco.
Pero me marca error al momento de ejecutarlo: Código:
Variable type (position 6) in EXECUTE STATEMENT 'SELECT a.FECHA_DISTRIBUCION, ' INTO does not match returned column type. At procedure 'MOVTOS_MASIVOS_DOTACIONES'.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! Última edición por mRoman fecha: 13-12-2015 a las 17:46:23. |
#4
|
||||
|
||||
Hola mRoman.
Cita:
Pero lamentablemente en la versión 2.0 aún no está implementada. De todos modos podes hacerte tu versión de la funcion como expongo en el mensaje #9 de este enlace: Buscar Valor dentro de una Cadena. Y en ese caso podrías hacer:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
||||
|
||||
Aplicare
Buenas noches.
Gracias ecfisa por contestar y por tu tiempo, haré una prueba con lo que me indicas y les comento como me fue Saludos
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#6
|
||||
|
||||
Hola,
en la procedure que pones, veo que puedes rener un error. Intenta que la procedure te devuelva el texto de la select que ejecutas en el execute estatement. Luego la intentas ejecutar. Así podrás descubrir qué falla. Por lo que observo, tienes tras sustituir por el valor quedaría
Esto estaría mal. Lo correcto sería
Al menos es lo que a mi me parece. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#7
|
||||
|
||||
Gracias
Cita:
Pero también marco error....bueno algo, pero sigo probando. Ahora haré una prueba con lo q me comentas. Nuevamente les agradezco su interes en ayudarme. Saludos.
__________________
Miguel Román Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !! |
#8
|
||||
|
||||
Hola,
hacer
valdría si pones las comillas o en el parámetro o en la construcción de la cadena. La sustitución del parámetro generaría la cadena Estoy suponiendo que tu parámetro contiene "Lecheria01". cuando debería ser
Por eso te digo que hagas que la función devuelva la select. Luego la recoges y la ejecutas en donde ejecutes las querys a pelo ( el ibexpprt o similar). Si funcionan, es que se generan correctamente. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ADO con parámetros | jonmendi | Conexión con bases de datos | 15 | 06-11-2011 16:18:26 |
UDF y parámetros | ARPE | Firebird e Interbase | 1 | 07-10-2010 05:44:07 |
Parametros Opcionales no Parametros por defecto | Velia | Varios | 7 | 19-08-2006 15:18:42 |
Parámetros en ADO | Delfin | Conexión con bases de datos | 0 | 19-03-2005 00:02:36 |
Parametros BDE | Red_Delphi | Conexión con bases de datos | 0 | 13-10-2003 10:18:05 |
|