Cobol - SQL Embebido - Select/SubSelect

 
Vista:

SQL Embebido - Select/SubSelect

Publicado por SuperIndio (1 intervención) el 25/04/2003 23:51:46
Good People Help me !!!
Este select [ por linea de comando funciona ok]
SELECT A0090,A1010,A6000,A0230,A6010,A9490,X0070,A6100,A6180,X0101,A1125,X0039,X0035,X0020,
X0021,X0022,X0023,X0030,X0100,X0102,A1040 FROM TYBD015
WHERE X0032 = 2 AND X0021 = 'S' AND
((TYBD015.A0090,
TYBD015.A1010,
TYBD015.A6000,
TYBD015.A0230,
TYBD015.A9490) IN(SELECT A0090, A1010, A6000,A0230, A9490
FROM TYBD015 WHERE X0032 = 1 AND X0021 = 'N'))
cuando lo pongo embebido no funciona alguien me puede ayudar u orientar
EXEC SQL DECLARE CR15 CURSOR FOR SELECT
SELECT A0090,
A1010,
A6000,
A0230,
A6010,
A9490,
X0070,
A6100,
A6180,
X0101,
A1125,
X0039,
X0035,
X0020,
X0021,
X0022,
X0023,
X0030,
X0100,
X0102,
A1040
FROM TYBD015
WHERE X0032 = 2
AND X0021 = 'S'
AND ((A0090,
A1010,
A6000,
A0230,
A9490) IN(SELECT
A0090, A1010, A6000, A0230, A9490
FROM TYBD015
WHERE X0032 = 1
AND X0021 = 'N'))
ORDER BY A0090, A1010, A6000, A0230
END-EXEC.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Corrección de código SQL embebido para declaración de cursor

Publicado por Alejandro (299 intervenciones) el 05/09/2023 17:08:37
El fragmento de código SQL que proporcionaste parece estar en formato de incrustación SQL dentro de un programa COBOL. Sin embargo, hay un problema en el código SQL embebido. Cuando se utiliza SQL embebido en COBOL, debes tener en cuenta algunas consideraciones de sintaxis y formato.

Primero, la cláusula `SELECT` no debe repetirse dentro de la sentencia `EXEC SQL DECLARE CURSOR`. En lugar de eso, simplemente menciona las columnas que deseas seleccionar en la declaración del cursor. Aquí está la corrección:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
EXEC SQL DECLARE CR15 CURSOR FOR
    SELECT A0090,
           A1010,
           A6000,
           A0230,
           A6010,
           A9490,
           X0070,
           A6100,
           A6180,
           X0101,
           A1125,
           X0039,
           X0035,
           X0020,
           X0021,
           X0022,
           X0023,
           X0030,
           X0100,
           X0102,
           A1040
    FROM TYBD015
    WHERE X0032 = 2
    AND X0021 = 'S'
    AND (A0090,
         A1010,
         A6000,
         A0230,
         A9490) IN (SELECT A0090, A1010, A6000, A0230, A9490
                    FROM TYBD015
                    WHERE X0032 = 1
                    AND X0021 = 'N')
    ORDER BY A0090, A1010, A6000, A0230;
END-EXEC.

En esta corrección, eliminé la segunda instancia de `SELECT` dentro de la declaración del cursor y simplemente enumeré las columnas que deseas seleccionar.

Además, asegúrate de que la sintaxis COBOL que rodea esta declaración sea correcta. Asegúrate de que los bloques `EXEC SQL` estén bien estructurados dentro del programa COBOL y que se haya realizado una conexión de base de datos adecuada antes de ejecutar esta consulta SQL embebida.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar