Hola buenos dias, queria ver si me podian ayudar, tengo el siguiente problema,
Tengo un store procedure (SP) que puede crea cualquiera de 5 esquemas distintos (pero los genera 1 cada vez que se la lanza el proceso), desde las las Pk's, los datos hasta las Fk's, el SP consiste en partes estáticas y otras dinamicas, según el esquema, bueno el error esta al momento de insertar la data en los esquemas de colombia y uruguay, este mismo SP puede crear sin problemas los esquemas de argentina chile y peru, el erro precisamente me lo indica en la parte estática, en la parte que inserta la data para las tablas, que se supone en todos los esquemas son iguales me aparece el error ora 936 indicandome que me falta una expresion pero es el mismo codigo que se usa y funciona en Chile, Peru o Argentina, pero para cualquiera de los otros dos esquemas, Colombia o Uruguay aparece ese error, les muestro el codigo, ojo que esto es un SP de prueba, tiene cursores, que se usan para otras cosas, y no se estan usando aqui
la tabla prueba esta creada de esta forma
PROMPT CREATE TABLE comuna
CREATE TABLE comuna (
id_provincia NUMBER(5,0) NULL,
lat NUMBER(11,8) NULL,
lon NUMBER(11,8) NULL,
id_centro_urbano NUMBER(4,0) NULL,
cod_subdere VARCHAR2(5) NULL,
id_comuna NUMBER(4,0) NULL,
id_region VARCHAR2(4) NULL,
nombre_comuna VARCHAR2(300) NULL,
poblacion_rural NUMBER NULL,
poblacion_urbana NUMBER NULL,
poblacion_ult_censo NUMBER NULL,
codigo_ine VARCHAR2(10) NULL
)
/
GRANT ALTER,DEBUG,DELETE,FLASHBACK,INDEX,INSERT,ON COMMIT REFRESH,QUERY REWRITE,REFERENCES,SELECT,UPDATE ON comuna TO configuracion;
esta query llena la tabla comuna, y me aparece el error, indicandome que esta query me falta una expresion, pero no entiendo, que sucede
PROMPT CREATE OR REPLACE PROCEDURE prueba
CREATE OR REPLACE PROCEDURE prueba(szPAIS IN VARCHAR2)
AS
lpNIVEL3 NUMBER(2,0);
lpNIVEL2 NUMBER(2,0);
lpNIVEL1 NUMBER(2,0);
lpNIVEL5 NUMBER(2,0);
SQL_STR VARCHAR2(1000);
lpCOD_PAIS NUMBER(3,0);
lpNIVEL NUMBER(3,0);
CURSOR C_TAB_FK IS
SELECT TABLE_NAME, OWNER, CONSTRAINT_NAME NOMBRE_FK
FROM CONFIGURACION.CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'R'
AND OWNER = szPAIS
AND TABLE_NAME IN (SELECT DISTINCT TABLE_NAME
FROM CONFIGURACION.MAPPAIS_COLUMN
WHERE ESQUEMA =szPAIS
AND FK <> 'N'
)
AND CONSTRAINT_NAME <>'AMARRE_DIRECCIONES_AMARRE_FK1'
ORDER BY TABLE_NAME;
-- CONTIENE LAS COLUMNAS DE UNA TABLA DONDE SE CREARA LA FK
-- CAMPO FK CONTIENE EL NOMBRE DE LA TABLA QUE SE REFERENCIA
CURSOR C_COL_FK IS
SELECT COLUMN_NAME, FK, CONSTRAINTS_NAME
FROM MAPPAIS_COLUMN
WHERE FK <> 'N'
AND CONSTRAINTS_NAME IN(SELECT NOMBRE
FROM CONFIGURACION.MAPPAIS_CNS_LIST)
AND ESQUEMA = szPAIS;
--- CONTIENE LAS COLUMNAS QUE SE REFERENCIAN
CURSOR C_COLPRI_FK IS
SELECT COLUMN_REF
FROM MAPPAIS_COLUMN
WHERE FK <> 'N'
AND CONSTRAINTS_NAME IN(SELECT NOMBRE
FROM CONFIGURACION.MAPPAIS_CNS_LIST)
AND ESQUEMA = szPAIS;
--CURSOR PARA CREAR LAS TABLAS CONTIENE LOS NOMBRES DE LAS TABLAS DE 'X' ESQUEMA
CURSOR C_TAB IS
SELECT
DISTINCT ESQUEMA,TABLE_NAME
FROM
CONFIGURACION.MAPPAIS_COLUMN
WHERE ESQUEMA = szPAIS;
-- CONTIENE LAS COLUMNAS DE UNA TABLA DE 'X' ESQUEMA
CURSOR C_COL IS
SELECT
ESQUEMA, TABLE_NAME, COLUMN_NAME, TYPE_COLUMN
FROM
CONFIGURACION.MAPPAIS_COLUMN
WHERE ESQUEMA = szPAIS
AND TABLE_NAME IN(SELECT TABLE_NAME FROM CONFIGURACION.MAPPAIS_TAB_LIST);
--
CURSOR C_TAB_PK IS
SELECT TABLE_NAME, OWNER, CONSTRAINT_NAME NOMBRE_PK
FROM CONFIGURACION.CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'P'
AND OWNER = szPAIS
AND TABLE_NAME IN ((SELECT DISTINCT TABLE_NAME
FROM CONFIGURACION.MAPPAIS_COLUMN
WHERE ESQUEMA =szPAIS
AND PK = 'Y'));
-- CONTIENE LAS COLUMNAS DE UNA TABLA
CURSOR C_COL_PK IS
SELECT COLUMN_NAME
FROM MAPPAIS_COLUMN
WHERE PK = 'Y'
AND TABLE_NAME IN(SELECT TABLE_NAME
FROM CONFIGURACION.MAPPAIS_TAB_LIST)
AND ESQUEMA = szPAIS;
--- VARIABLES QUE MANEJAN LA CREACION DE LA QUERY PARA LAS FK
R_TAB_FK C_TAB_FK%ROWTYPE;
R_COL_FK C_COL_FK%ROWTYPE;
R_COL_FKPRI C_COLPRI_FK%ROWTYPE;
---VARIABLE QUE ALMACENA EL STRING, CON LA INSTRUCCION DE CREACION DE LAS FK
szQURYFK VARCHAR2(10000);
---VARIABLES QUE MANEJAN CURSORES PARA PK
R_TAB_PK C_TAB_PK%ROWTYPE;
R_COL_PK C_COL_PK%ROWTYPE;
szQURY VARCHAR2(10000);
--- VARIABLES QUE MANEJAN LA CREACION DE LAS TABLAS
R_TAB C_TAB%ROWTYPE;
R_COL C_COL%ROWTYPE;
szQUERY VARCHAR2(10000);
szTAB VARCHAR2(100);
----------------------------------------
---VARIABLES QUE MANEJAN LA CREACION DE LAS PK
szQRY VARCHAR2(10000);
BEGIN
lpNIVEL5 :=5;
lpNIVEL3 :=3;
lpNIVEL2 :=2;
lpNIVEL1 :=1;
lpCOD_PAIS :=598;
lpNIVEL :=3;
--------------------------------------------------------------------------------
--COMUNA
EXECUTE IMMEDIATE 'ALTER TABLE '||SZPAIS||'.COMUNA NOLOGGING';
EXECUTE IMMEDIATE 'INSERT /* + APPEND */ INTO '||SZPAIS||'.COMUNA (NOMBRE_COMUNA, ID_CENTRO_URBANO, CODIGO_INE, LAT, LON, ID_COMUNA
,ID_PROVINCIA, ID_REGION, COD_SUBDERE, POBLACION_ULT_CENSO, POBLACION_URBANA, POBLACION_RURAL)
SELECT
DISTINCT
CAST (B.NOMBRE_DIV_GEO AS VARCHAR2(50)) AS NOMBRE_COMUNA,
CAST (C.ID_CENTRO_URBANO AS NUMBER(4,0)) AS ID_CENTRO_URBANO,
CAST (NULL AS VARCHAR2(10)) AS CODIGO_INE,
CAST (B.LAT AS NUMBER(11,8)) AS LAT,
CAST (B.LON AS NUMBER(11,8)) AS LON,
CAST (B.ID_DIV_GEO AS NUMBER(4,0)) AS ID_COMUNA,
CAST (Z.ID_PROVINCIA AS NUMBER(5,0)) AS ID_PROVINCIA,
CAST (Z.ID_REGION AS VARCHAR2(3)) AS ID_REGION,
CAST (B.CODIGO_SUBDERE AS VARCHAR2(5)) AS COD_SUBDERE,
CAST (B.POBLACION_ULT_CENSO AS NUMBER(12,0)) AS POBLACION_ULT_CENSO,
CAST (B.POBLACION_URBANA AS NUMBER(12,0)) AS POBLACION_URBANA,
CAST (B.POBLACION_RURAL AS NUMBER(12,0)) AS POBLACION_RURAL
FROM FOTOFULL_LATAM_1.DIVISION_GEOPOLITICA B
INNER JOIN FOTOFULL_LATAM_1.CENTRO_URBANO C
ON B.ID_CENTRO_URBANO = C.ID_CENTRO_URBANO
AND B.COD_PAIS = C.COD_PAIS
INNER JOIN ( SELECT P.ID_DIV_GEO,
P.ID_DIV_GEO AS ID_PROVINCIA,
R.ID_DIV_GEO_OLD AS ID_REGION
FROM FOTOFULL_LATAM_1.DIVISION_GEOPOLITICA P
INNER JOIN FOTOFULL_LATAM_1.DIVISION_GEOPOLITICA R
ON P.ID_DIV_GEO_PADRE = R.ID_DIV_GEO
AND P.COD_PAIS = R.COD_PAIS
AND P.COD_PAIS = '||LPCOD_PAIS||'
AND P.ID_NIVEL = '||LPNIVEL3||'
AND R.ID_NIVEL ='||LPNIVEL2||'
) Z
ON B.ID_DIV_GEO_PADRE = Z.ID_DIV_GEO
AND B.COD_PAIS ='||LPCOD_PAIS||'
AND B.ID_NIVEL = '||LPNIVEL||'';
COMMIT ;
END;
/
Esa es mi pregunta, ojala me puedan echar una mano, debe ser algo super tonto, pero estoy tan mareado con el SP, que no lo veo seguramente, Gracias ::) :(