Iniciar Sesión

Ver la Versión Completa : [Sintaxis] Error de sintaxis SQL


GabrielACE
4 de enero de 2019, 16:58
hola gente, tengo microfocus acucobol 9.11 y dbmaker

actualmente uso las tablas como si fueran archivos indexados, pero necesito acceder ahora
usando desde el mismo cobol a tablas mediante consultas tipo SQL


el tema es que cuando compilo me tira error de sintaxis

EXEC SQL
SELECT au_lname INTO :lastname FROM authors
WHERE au_id = '124-59-3864'
END-EXEC

pero se que la sintaxis esta bien, me parece que el problema es que no configure el compilador para ejecutar con SQL

alguien sabe si estoy en lo correcto? y de ser asi como modificar el compilador?

Kuk
4 de enero de 2019, 21:08
GabrielACE, no es END-EXEC sino END EXEC con espacio entre END y EXEC.

GabrielACE
7 de enero de 2019, 16:14
GabrielACE, no es END-EXEC sino END EXEC con espacio entre END y EXEC.

NOP

tampoco funciono


159 00000A DISPLAY "PRUEBA DE RUTINA PARA ALEATORIO"
160 LINE 2 COL 1 ERASE
161 "NUM MAXI: " LINE 5 COL 35.
162
163 EXEC SQL
-->ERROR: Verb expected, EXEC found
164 000021 SELECT AT_NUCHASIS INTO :WS-NUCHASIS FROM autos
165 WHERE AT_COAUTO= 123456;
166 END EXEC.
167

Kuk
7 de enero de 2019, 19:18
GabrielACE, es que esto depende del dialecto. En Enterprise COBOL de IBM creo recordar que es como he dicho antes. Pero mirando la documentación de Micro Focus por ejemplo, es como lo habías hecho tú al principio, con guion.

A ver, ¿puedes publicar el error que te daba exactamente al principio, con END-EXEC?

GabrielACE
7 de enero de 2019, 21:42
GabrielACE, es que esto depende del dialecto. En Enterprise COBOL de IBM creo recordar que es como he dicho antes. Pero mirando la documentación de Micro Focus por ejemplo, es como lo habías hecho tú al principio, con guion.

A ver, ¿puedes publicar el error que te daba exactamente al principio, con END-EXEC?

daba el mismo error.

estoy seguro de que tengo varios errores, el problema es que no tengo un ejemplo de microfocus con tablas SQL

por ejemplo, se que tengo que definir en la working el diseño de la tabla para que la reconozca

que en IBM se ponia

EXEC SQL BEGIN DECLARE SECTION

CAMBIO TABLE
(

CAM_FECHA DECIMAL(8 ,0) NOT NULL,
CAM_CAMBIO DECIMAL(5, 4) NOT NULL

)
END-EXEC.

pero aqui me dice que es un error porque le falta el nivel 01

estoy complado con este tema :-S

Kuk
7 de enero de 2019, 22:38
GabrielACE, no, olvídate de IBM. No tienes que declarar la tabla en formato SQL. En esa sección tienes que declarar las variables Host que vas a usar en tus querys.

:piensa: ¿Has activado el precompilador de SQL ?

Echa un vistazo a los ejemplos de SQL embebido que hay en el foro, te van a servir mucho.

Xavier
8 de enero de 2019, 13:07
Hola GabrielACE
Yo trabajo con PowerCobol, pero creo que la sintaxis es la misma.
En la WORKING-STORAGE debes definir las variables que vas a utilizar para "recoger" los datos de la Base de Datos, Por ejemplo:
* Declarar las variables de las Tablas
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 TablaClientes GLOBAL.
02 wCodigoCliente PIC S9(9) COMP-5.
02 wNombreCliente PIC X(40).
EXEC SQL END DECLARE SECTION END-EXEC.

En la PROCEDURE DIVISION.
MOVE 1 TO wCodigoCliente
EXEC SQL
SELECT NombreCliente
INTO :wNombreCliente
FROM TablaClientes
WHERE CodigoCliente = :wCodigoCliente
END-EXEC

Espero que te sirva

GabrielACE
8 de enero de 2019, 21:22
GabrielACE, no, olvídate de IBM. No tienes que declarar la tabla en formato SQL. En esa sección tienes que declarar las variables Host que vas a usar en tus querys.

:piensa: ¿Has activado el precompilador de SQL ?

Echa un vistazo a los ejemplos de SQL embebido que hay en el foro, te van a servir mucho.

eso de activar el precompilador se que es una de las muchas cosas que me faltan

pero no tengo ni idea como activarlo, sabes como se hacer?

Kuk
9 de enero de 2019, 21:11
GabrielACE, si no activas el precompilador, que convierte la sintaxis SQL en CALL-s de Cobol, el programa te va a dar errores de sintaxis.

Habrá que mirar las propiedades del proyecto. En Micro Focus Visual COBOL es así:

GabrielACE
29 de enero de 2019, 13:19
Gracias por la data, el problema es que es la version 9.11, asi que no tengo ninguna ventaja visual para esas cosas

Kuk
29 de enero de 2019, 20:14
GabrielACE, pues de alguna manera se podrá activar el precompilador. Si es versión consola, habra que activar algún parámetro.

Échale un vistazo a esto:


Invoking the Pre-compiler From the ACUCOBOL-GT Command Line (https://supportline.microfocus.com/Documentation/AcucorpProducts/docs/v6_online_doc/acusql/sql35.htm)
AcuSQL Pre-compiler (https://www.microfocus.com/documentation/extend-acucobol/925/GUID-69F0C336-D7BF-4638-A85F-0064AB9467BB.html)