Ver Mensaje Individual
  #9
Antiguo 12 de junio de 2018, 13:37
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 02.10.2026 11:51
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

drvedia1981,

He estado haciendo pruebas y SÍ se puede usar un COUNT() en un PREPARE, vamos a suponer que tienes una tabla que se llama ABREVIAS y tiene como campos:
ABRCOD varchar(3) UNIQUE
ABRNOM varchar(60)

la programación en PWC sería de ésta manera:

Código COBOL:
  1.  WORKING-STORAGE SECTION.
  2.             EXEC SQL
  3.                  BEGIN DECLARE SECTION
  4.             END-EXEC.
  5.  01  WTEX               PIC X(100).
  6.  01  CONTASQL           PIC S9(5).
  7.             EXEC SQL
  8.                  END DECLARE SECTION
  9.             END-EXEC.
  10. .
  11. .
  12. .
  13. .
  14.  
  15.  PROCEDURE       DIVISION.
  16.  INICIO.
  17. *
  18.      MOVE "SELECT COUNT(ABRCOD) FROM ABREVIAS WHERE ABRCOD LIKE '%A%'" TO WTEX.
  19.  
  20.      EXEC SQL
  21.           PREPARE CONSULTA FROM :WTEX
  22.      END-EXEC.
  23.      
  24.      EXEC SQL
  25.           execute CONSULTA INTO :CONTASQL
  26.      END-EXEC.

Lo que ya no reconoce el SqlEmbebido es la instrucción DEALLOCATE PREPARE ..., pero bueno, el resto funciona perfectamente, tanto poniendo un * como el nombre de la variable en el COUNT.

Citación del post de Kuk Ver Mensaje
❞
Y en cuanto a lo de usar COUNT() en un cursor
No le veo la utilidad, si lo que quieres es contar los registros que cumplan unos parámetros, y SQL, te los cuenta sin tener que hacer un recorrido por la tabla con un FETCH, el que se pueda usar, vale, pero el que sea útil ...

Un saludo.-
Josber is offline   Responder Con Cita