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)
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.