Se me ha pasado el ponerte como se crea la tabla
Código COBOL:
EXEC SQL
CREATE TABLE IF NOT EXIST 'gastos' (
'ID_GAS' int(11) unsigned NOT NULL AUTO_INCREMENT,
'GASLIB' varchar(4) DEFAULT NULL COMMENT 'LIBRO DE GASTOS',
'GASFEC' varchar(8) DEFAULT NULL COMMENT 'FECHA APUNTE',
'GASDES' varchar(60) DEFAULT NULL COMMENT 'DESCRIPCIÓN APUNTE',
'GASIMP' decimal(12,3) NOT NULL DEFAULT '0.000' COMMENT 'IMPORTE APUNTE',
'GASTIP' varchar(1) DEFAULT NULL COMMENT 'TIPO DE APUNTE(GASTO o INGRESO)',
'GASOBS' varchar(100) DEFAULT NULL COMMENT 'OBSERVACIONES APUNTE',
'GASUSU' varchar(10) DEFAULT NULL COMMENT 'USUARIO QUE HIZO EL APUNTE',
'GASUSU_FEC' varchar(8) DEFAULT NULL COMMENT 'FECHA QUE SE HIZO EL APUNTE',
'GASHOR' decimal(6,0) DEFAULT '0' COMMENT 'HORA EN LA QUE SE HIZO EL APUNTE',
'GASUSU_MOD' varchar(10) DEFAULT NULL COMMENT 'USUARIO ÚLTIMA MODIFICACIÓN',
'GASFEC_MOD' varchar(8) DEFAULT NULL COMMENT 'FECHA ÚLTIMA MODIFICACIÓN',
'GASHOR_MOD' decimal(6,0) DEFAULT NULL COMMENT 'HORA ÚLTIMA MODIFICACIÓN',
'GASELI' varchar(1) DEFAULT NULL COMMENT '¿APUNTE ELIMINADO?',
UNIQUE KEY ('ID_GAS')
) ENGINE=InnoDB DEFAULT CHARSET=latin1
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:
EXEC SQL
DELETE FROM GASTOS
WHERE ID_GAS = :WID_GAS
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:
EXEC SQL
TRUNCATE TABLE GASTOS
END-EXEC.
- Si quieres eliminar por completo la tabla, (datos y estructura)
Código COBOL:
EXEC SQL
DROP TABLE GASTOS
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:
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:
01 WNUM PIC S9(7).
01 WDEC PIC S9(7)V999.
en SQL, sería
Código SQL:
'WNUM' decimal(7,0),
'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:
EXEC SQL
DECLARE cursor1 CURSOR FOR
SELECT ID_GAS,
GASFEC,
GASDES,
GASIMP,
GASTIP,
GASOBS,
GASELI
FROM GASTOS WHERE GASLIB = :WGASLIB AND GASELI <> "S"
ORDER BY ID_GAS ASC;
OPEN cursor1
END-EXEC.
Cuidado con las comas y los punto y comas, que son obligatorios y es muy estricto en ésto.
Un saludo