Estoy escribiendo un sp para cargar datos en varias tablas desde archivos planos. Lo primero que se me ocurrió fue copiar las instrucciones que usa informix para descargar datos desde archivos .unl cuando genera dbexport, o sea:
{ TABLE “dba”.sga_sedes row size = 440 number of columns = 12 index size = 27 }
{ unload file name = sga_s00760.unl number of rows = 1 }
de esto tomo el formato, cambio algunos nombres. Una de las tablas que tengo que crear y cargar es exactamente igual a sga_sedes, el sp queda:
CREATE PROCEDURE sui_MaDeZAS (
)
BEGIN
drop table “dba”.mdz_sedes;
{ TABLE “dba”.mdz_sedes row size = 440 number of columns = 12 index size = 27 }
{ unload file name = mdz_sedes.unl number of rows = 1 }
create table “dba”.mdz_sedes
(
sede varchar(5) not null ,
nombre varchar(255) not null ,
calle varchar(50),
numero varchar(5),
piso varchar(3),
departamento varchar(5),
unidad varchar(3),
localidad integer,
codigo_postal varchar(15),
telefono char(18),
fax char(18),
email varchar(50)
);
END;
END PROCEDURE;
Lo doy de alta y lo ejecuto, no hay errores. Como resultado está la tabla mdz_sedes sin datos.
mdz_sedes.unl es una copia de sga_s00760.unl que genera, en la importación, la tabla sga_sedes.
Probé grabar mdz_sedes.unl en varias carpetas y nada.
Efectuvamente, lo que esta entre { } es un comentario, con lo cual el stored procedure que hiciste solo crea la tabla, no la carga.
Desde donde vas a llamar al stored procedure ? Es necesario que la carga se haga desde un stored procedure ?, no podes hacerla desde un sql o desde un .bat ?
Esa sintaxis en un sql solo es interpretada bien por el dbimport, que está hecho para interpretarla. En un SP o un script SQL son comentarios como ya te dijeron
Tenes que usar el comando load, y el archivo de datos no es obligación que sea un archivo .unl.