Iniciar Sesión

Ver la Versión Completa : [Sintaxis] Sql Embebido condición where


Hrmcobol
25 de abril de 2020, 11:47
Hola Amigos, espero que sen encuentren todos bien, Don Corona nos tiene a todos enjaulados !!!

EstoY empezando a trabajar con Sql Embebido como dije en otro post.
Resulta que tengo la condición siguiente cargada en una variable cobol que se genera de acuerdo a ciertas condiciones que decide el operador del Soft:

ART-DESCRI LIKE '%RECEP%' AND ART-CODIGO LIKE '%X-123%'

Si yo muevo el contenido de esta variable a la "Condición" del Control DbAccess del pw encuentra los registros con esa condición.


MOVE WG-TXT001 TO SQL-WG-TXT001
EXEC SQL DECLARE WS-LECTURA CURSOR FOR SELECT * FROM EST_ORIGEN WHERE SQL-WG-TXT001 END-EXEC


No trae ningún registro.
No encontré ejemplos con esta necesidad, alguien sabe que estoy hacineda mal?

Abrazooooo !!!

Y quédense en casa !!!

Kuk
25 de abril de 2020, 12:03
Hrmcobol, te has olvidado de que el embebido no es dinámico, debes pasar la condición en claro a la hora de compilar.


EXEC SQL
DECLARE WS-LECTURA CURSOR FOR
SELECT *
FROM EST_ORIGEN
WHERE ART-DESCRI LIKE '%RECEP%' AND ART-CODIGO LIKE '%X-123%'
END-EXEC

Josber
25 de abril de 2020, 12:43
Hrmcobol,

Bueno, antes de nada Hrm, nunca utilices nombres_de_variables con el guión medio (-), usa siempre el guión bajo (_), porque si no, el gestor de SQL, cree que estás restando los valores de esas 2 variables, yo al principio me volví loco con eso, hasta que me di cuenta de casualidad, por eso en el ejemplo que te he puesto, uso las mismas variables que tú, pero cambiando el guión.

Para ese tipo de consulta, (que dependen de unas condiciones para montar un tipo u otro de consulta), no puedes hacerlo con un DECLARE sólo, has de usar un PREPARE también, prueba de la siguiente manera a ver si te funciona:



INITIALIZE SQL_WG_TXT001.
STRING "SELECT * FROM EST_ORIGEN WHERE "
"ART_DESCRI LIKE '%RECEP%' AND ART_CODIGO LIKE '%X-123%'"
DELIMITED BY SIZE INTO SQL_WG_TXT001
END-STRING.

EXEC SQL
DECLARE cursor_1 CURSOR FOR CONSULTA
END-EXEC.

EXEC SQL
PREPARE CONSULTA FROM :SQL_WG_TXT001
END-EXEC.

EXEC SQL
OPEN cursor_1
END-EXEC.

.
.
.
.

EXEC SQL
CLOSE cursor_1
END-EXEC.



De ésta manera, con el STRING y el PREPARE, puedes montar la consulta que quieras, si no, imagínate lo que sería hacer una consulta de la pantalla que adjunto ...

Si necesitas un ejemplo más grande, dímelo y te pongo alguno de los que tengo hecho en algún programa mío.

Un saludo

Hrmcobol
25 de abril de 2020, 21:43
SALIO ANDANDOOOOO !!! ! ! ! ! ! ! ! !