tema enviado por lilia en ORACLE
tema iniciado el 19/03/2007
Hola, gracias por la ayuda que le han dado a mis dudas, me han servido mucho. Ahora necesito que me ayuden con esto. Please…
Tengo creado 2 esquemas: CRM y DATAMART (c/u como sysdba), el procedimiento que les presento funciona correctamente si lo creo en el esquema CRM, pero realmente debo crearlo en el esquema DATAMART y es ahí donde tengo el sgte. Error: “tabla o vista no creada”.
Como solución trate de asignarle el esquema en el from (esta de color rojo y comentariado) pero tampoco reconoce la tabla, si ejecuto el select individualmente funciona; no se si el error esta al usar el utl_file. Por favor necesito ayuda con este error. De antemano muchas gracias.
Ah.. necesito guardar el nombre y la fecha de creación del archivo, es aquel que esta en comentario si no es demasiado pedir.
CREATE OR REPLACE PROCEDURE EXTRACCION IS
V_FH_1 UTL_FILE.FILE_TYPE;
P_FILEDIR VARCHAR2(50) := 'FILE_DATA';
P_FILENAME VARCHAR2(50);
CURSOR AGENCIAS IS
SELECT AGE_CODIGO,
AGE_DESCRIPCION,
AGE_DIRECCION,
AGE_TELEFONO_1,
AGE_TELEFONO_2,
AGE_CIUDAD
FROM CRM_ADM_AGENCIAS;
--FROM CRM.CRM_ADM_AGENCIAS;
CURSOR CIUDADES IS
SELECT CDD_CODIGO,
CDD_DESCRIPCION,
CDD_CODIGO_PROVINCIA
FROM CRM_ADM_CIUDADES;
--FROM CRM.CRM_ADM_CIUDADES;
CURSOR PROVINCIAS IS
SELECT PRV_CODIGO,
PRV_DESCRIPCION,
PRV_CODIGO_REGION
FROM CRM_ADM_PROVINCIAS;
--FROM CRM.CRM_ADM_PROVINCIAS;
CURSOR REGIONES IS
SELECT RGN_CODIGO,
RGN_DESCRIPCION,
RGN_CODIGO_PAIS
FROM CRM_ADM_REGIONES;
--FROM CRM.CRM_ADM_REGIONES;
BEGIN
P_FILENAME := 'AGENCIA' || TO_CHAR(SYSDATE,'YYYYMMDD') || '.TXT';
V_FH_1 := UTL_FILE.FOPEN(P_FILEDIR, P_FILENAME, 'W');
/* INSERT INTO DTM_ARCHIVOS VALUES (DTM_S_ARCHIVOS.NEXTVAL, P_FILENAME, TO_CHAR(SYSDATE,'DD-MM-YYYY')); */
FOR V_EMP_INFO IN AGENCIAS
LOOP
UTL_FILE.PUTF(V_FH_1, '%s %s %s %s %s %s \n',
(TO_CHAR(V_EMP_INFO.AGE_CODIGO)) || '|' ||
V_EMP_INFO.AGE_DESCRIPCION || '|' ||
V_EMP_INFO.AGE_DIRECCION || '|' ||
V_EMP_INFO.AGE_TELEFONO_1 || '|' ||
V_EMP_INFO.AGE_TELEFONO_2 || '|' ||
V_EMP_INFO.AGE_CIUDAD);
END LOOP;
UTL_FILE.FCLOSE(V_FH_1);
--BEGIN
P_FILENAME := 'CIUDAD' || TO_CHAR(SYSDATE,'YYYYMMDD') || '.TXT';
V_FH_1 := UTL_FILE.FOPEN(P_FILEDIR, P_FILENAME, 'W');
FOR V_EMP_INFO IN CIUDADES
LOOP
UTL_FILE.PUTF(V_FH_1, '%s %s %s \n',
V_EMP_INFO.CDD_CODIGO || '|' ||
V_EMP_INFO.CDD_DESCRIPCION || '|' ||
V_EMP_INFO.CDD_CODIGO_PROVINCIA);
END LOOP;
UTL_FILE.FCLOSE(V_FH_1);
--BEGIN
P_FILENAME := 'PROVINCIA' || TO_CHAR(SYSDATE,'YYYYMMDD') || '.TXT';
V_FH_1 := UTL_FILE.FOPEN(P_FILEDIR, P_FILENAME, 'W');
FOR V_EMP_INFO IN PROVINCIAS
LOOP
UTL_FILE.PUTF(V_FH_1, '%s %s %s \n',
V_EMP_INFO.PRV_CODIGO || '|' ||
V_EMP_INFO.PRV_DESCRIPCION || '|' ||
V_EMP_INFO.PRV_CODIGO_REGION);
END LOOP;
UTL_FILE.FCLOSE(V_FH_1);
--BEGIN
P_FILENAME := 'REGION' || TO_CHAR(SYSDATE,'YYYYMMDD') || '.TXT';
V_FH_1 := UTL_FILE.FOPEN(P_FILEDIR, P_FILENAME, 'W');
FOR V_EMP_INFO IN REGIONES
LOOP
UTL_FILE.PUTF(V_FH_1, '%s %s %s \n',
V_EMP_INFO.RGN_CODIGO || '|' ||
V_EMP_INFO.RGN_DESCRIPCION || '|' ||
V_EMP_INFO.RGN_CODIGO_PAIS);
END LOOP;
UTL_FILE.FCLOSE(V_FH_1);
EXCEPTION
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
RAISE_APPLICATION_ERROR (-20001, 'Invalid File');
UTL_FILE.FCLOSE_ALL;
WHEN UTL_FILE.WRITE_ERROR THEN
RAISE_APPLICATION_ERROR (-20002, 'Unabled to write to file');
UTL_FILE.FCLOSE_ALL;
END EXTRACCION;