Tema: Sql Embebido
Ver Mensaje Individual
  #3
Antiguo 19 de febrero de 2016, 11:46
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 21.09.2026 07:20
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Se me ha pasado el ponerte como se crea la tabla

Código COBOL:
  1. EXEC SQL
  2. CREATE TABLE IF NOT EXIST 'gastos' (
  3.  'ID_GAS' int(11) unsigned NOT NULL AUTO_INCREMENT,
  4.  'GASLIB' varchar(4) DEFAULT NULL COMMENT 'LIBRO DE GASTOS',
  5.  'GASFEC' varchar(8) DEFAULT NULL COMMENT 'FECHA APUNTE',
  6.  'GASDES' varchar(60) DEFAULT NULL COMMENT 'DESCRIPCIÓN APUNTE',
  7.  'GASIMP' decimal(12,3) NOT NULL DEFAULT '0.000' COMMENT 'IMPORTE APUNTE',
  8.  'GASTIP' varchar(1) DEFAULT NULL COMMENT 'TIPO DE APUNTE(GASTO o INGRESO)',
  9.  'GASOBS' varchar(100) DEFAULT NULL COMMENT 'OBSERVACIONES APUNTE',
  10.  'GASUSU' varchar(10) DEFAULT NULL COMMENT 'USUARIO QUE HIZO EL APUNTE',
  11.  'GASUSU_FEC' varchar(8) DEFAULT NULL COMMENT 'FECHA QUE SE HIZO EL APUNTE',
  12.  'GASHOR' decimal(6,0) DEFAULT '0' COMMENT 'HORA EN LA QUE SE HIZO EL APUNTE',
  13.  'GASUSU_MOD' varchar(10) DEFAULT NULL COMMENT 'USUARIO ÚLTIMA MODIFICACIÓN',
  14.  'GASFEC_MOD' varchar(8) DEFAULT NULL COMMENT 'FECHA ÚLTIMA MODIFICACIÓN',
  15.  'GASHOR_MOD' decimal(6,0) DEFAULT NULL COMMENT 'HORA ÚLTIMA MODIFICACIÓN',
  16.  'GASELI' varchar(1) DEFAULT NULL COMMENT '¿APUNTE ELIMINADO?',
  17.  UNIQUE KEY ('ID_GAS')
  18. ) ENGINE=InnoDB DEFAULT CHARSET=latin1
  19. END-EXEC

Si no pones la instrucción IF NOT EXIST, te dará error si la tabla ya existe

- Si deseas eliminar elementos de la tabla:

Código COBOL:
  1. EXEC SQL
  2.         DELETE FROM GASTOS
  3.                    WHERE ID_GAS = :WID_GAS
  4. END-EXEC.

- Si quieres vaciar por completo una tabla, además de poner el contador AUTO_INCREMENT a 0, (si lo tiene la tabla, que no es obligatorio)

Código COBOL:
  1. EXEC SQL
  2.         TRUNCATE TABLE GASTOS
  3. END-EXEC.

- Si quieres eliminar por completo la tabla, (datos y estructura)

Código COBOL:
  1. EXEC SQL
  2.         DROP TABLE GASTOS
  3. END-EXEC.

¡Cuidado! que TRUNCATE y DROP, no tienen vuelta atrás

Si quieres ver cómo esta creada una tabla, desde el administrador de BD, no desde tu programa COBOL

Código SQL:
  1. SHOW CREATE TABLE Nombre_de_la_tabla

Esto te daría un fichero de texto plano muy similar al que utilizas para crear la tabla.

Un saludo y suerte.-

---------- Post añadido : 11:46 ---------- Post anterior : 11:30 ----------

Otra cosa a tener en cuenta, es cuando creas un número en SQL y has de ponerle un tamaño con decimales, esto se define entre paréntesis, el primer número indica el tamaño total, (incluidos los decimales) y el segundo los decimales, por ejemplo, un campo en COBOL del tipo

Código COBOL:
  1. 01  WNUM        PIC S9(7).
  2. 01  WDEC        PIC S9(7)V999.

en SQL, sería

Código SQL:
  1. 'WNUM' decimal(7,0),
  2. 'WDEC' decimal(10,3)

Si te fijas WDECIMAL en SQL, tiene un tamaño de 10, de los que 3 son decimales.
Los campos en SQL, se separan utilizando el símbolo de la , (coma), y las instrucciones se separan utilizando el símbolo ; (punto y coma), por ejemplo:

Código COBOL:
  1.      
  2.      EXEC SQL
  3.  
  4.           DECLARE cursor1 CURSOR FOR
  5.                   SELECT ID_GAS,
  6.                          GASFEC,
  7.                          GASDES,
  8.                          GASIMP,
  9.                          GASTIP,
  10.                          GASOBS,
  11.                          GASELI
  12.                   FROM GASTOS WHERE GASLIB = :WGASLIB AND GASELI <> "S"
  13.                          ORDER BY ID_GAS ASC;
  14.  
  15.           OPEN cursor1
  16.  
  17.      END-EXEC.

Cuidado con las comas y los punto y comas, que son obligatorios y es muy estricto en ésto.



Un saludo
Josber is offline   Responder Con Cita