CREATE PROCEDURE SEPOMEX
RETURNS (
MUNICIPIOS_BASE INTEGER,
MUNICIPIOS_SEPOMEX INTEGER,
EXISTENTES_BASE VARCHAR (75),
EXISTENTES_SEPOMEX VARCHAR (36),
CONCATENADOS VARCHAR (150),
MAXID INTEGER)
AS
DECLARE variable MSepomex VARCHAR(36);
DECLARE variable MBase VARCHAR(36);
DECLARE variable CSColonia VARCHAR(150);
DECLARE variable CBColonia VARCHAR(60);
DECLARE variable Asentamiento VARCHAR(50);
DECLARE variable SMunicipio VARCHAR(75);
DECLARE variable NAsentamiento VARCHAR(33);
DECLARE variable SZona VARCHAR(2);
DECLARE variable IDClase VARCHAR(2);
DECLARE variable SMunicipios VARCHAR(36);
DECLARE variable BMunicipios VARCHAR(36);
DECLARE variable TipoAsentamiento VARCHAR(50);
DECLARE variable MSestado INTEGER;
DECLARE variable ECantidad INTEGER;
DECLARE variable IDSepomex INTEGER;
DECLARE variable IDMunicipio INTEGER;
DECLARE variable SCOficina INTEGER;
DECLARE variable IDAsentamiento INTEGER;
DECLARE variable CCor INTEGER;
DECLARE variable SCodigo INTEGER;
DECLARE variable NMunicipio INTEGER;
DECLARE variable InsertaMunicipio INTEGER;
DECLARE variable NuevoId INTEGER;
DECLARE variable MaximoID INTEGER;
DECLARE variable IDCiudad INTEGER;
DECLARE variable CuentaMB INTEGER;
DECLARE variable CuentaMS INTEGER;
BEGIN
FOR SELECT ID_ESTADO
FROM ZZ_SPM_ENTIDADES
INTO :ECantidad DO
BEGIN
SELECT COUNT(DISTINCT ID_MUNICIPIO)
FROM ZZ_SPM_MUNICIPIOS MB
/*WHERE MB.ID_ESTADO =:ECantidad*/
WHERE MB.ID_ESTADO = 1
INTO :CuentaMB;
SELECT COUNT(DISTINCT UPPER(D_MUNICIPIO))
FROM TEMPORAL_SEPOMEX MS
/*WHERE MS.C_ESTADO =:ECantidad*/
WHERE MS.C_ESTADO = 1
INTO :CuentaMS;
IF(CuentaMB = CuentaMS) THEN
FOR
SELECT DISTINCT (TS.D_MUNICIPIO), MB.NOMBRE
FROM TEMPORAL_SEPOMEX TS
INNER JOIN ZZ_SPM_MUNICIPIOS MB
ON TS.D_MUNICIPIO = MB.NOMBRE
WHERE TS.C_ESTADO =:ECantidad
INTO :SMunicipios, :BMunicipios DO
BEGIN
IF(:SMunicipios = :BMunicipios)THEN
BEGIN
FOR
SELECT DISTINCT
UPPER(TS.D_ASENTAMIENTO), UPPER(TS.ID_SEPOMEX),
UPPER(TS.D_MUNICIPIO), UPPER(SC.NOMBRE), TS.C_ESTADO, TS.D_TIPO_ASENTAMIENTO
FROM TEMPORAL_SEPOMEX TS
LEFT OUTER JOIN ZZ_SPM_COLONIAS SC
ON TS.D_ASENTAMIENTO = SC.NOMBRE
WHERE TS.C_ESTADO = 1 AND SC.NOMBRE IS NULL
/*WHERE TS.C_ESTADO =:ECantidad AND SC.NOMBRE IS NULL*/
INTO :CSColonia, :IDSepomex, :SMunicipio, :CBColonia, :MSestado, :TipoAsentamiento DO
BEGIN
IF(:CBColonia IS NULL) THEN
BEGIN
FOR SELECT MAX(ID_COLONIA)
FROM ZZ_SPM_COLONIAS
WHERE ID_ESTADO = 1
/*WHERE ID_ESTADO =:ECantidad*/
INTO :MaximoID DO
BEGIN
MAXID =:MaximoID;
NuevoId =:MaximoID +1;
FOR SELECT DISTINCT SC.ID_CIUDAD
FROM ZZ_SPM_CIUDADES SC
WHERE ID_ESTADO =:MSestado AND NOMBRE =:SMunicipio
INTO :IDCiudad DO
BEGIN
FOR SELECT UPPER(C_MUNICIPIO)
FROM TEMPORAL_SEPOMEX
WHERE D_ASENTAMIENTO =:CSColonia
AND C_ESTADO =:MSestado AND D_MUNICIPIO =:SMunicipio
INTO :IDMunicipio DO
BEGIN
FOR SELECT SM.ID_MUNICIPIO
FROM ZZ_SPM_MUNICIPIOS SM
WHERE SM.ID_MUNICIPIO =:IDMunicipio AND SM.ID_ESTADO =:MSestado
INTO :NMunicipio DO
IF(:IDMunicipio = :NMunicipio) THEN
BEGIN InsertaMunicipio =:NMunicipio; END
ELSE
BEGIN InsertaMunicipio =:NMunicipio; END
BEGIN
FOR SELECT TS.C_OFICINA
FROM TEMPORAL_SEPOMEX TS
WHERE ID_SEPOMEX =:IDSepomex
INTO :SCOficina DO
BEGIN
FOR
SELECT DISTINCT ID_ASENTAMIENTO
FROM ZZ_SPM_ASENTAMIENTO SA
INNER JOIN TEMPORAL_SEPOMEX TS
ON SA.NOMBRE = TS.D_TIPO_ASENTAMIENTO
WHERE SA.NOMBRE LIKE '%'||:TipoAsentamiento||'%'
INTO :IDAsentamiento DO
BEGIN
FOR SELECT DISTINCT TS.D_CODIGO
FROM TEMPORAL_SEPOMEX TS
WHERE TS.ID_SEPOMEX =:IDSepomex
INTO :SCodigo DO
BEGIN
FOR SELECT DISTINCT(COR)
FROM ZZ_SPM_COLONIAS
WHERE ID_ESTADO =:MSestado
INTO :CCor DO
BEGIN
FOR SELECT SUBSTR(TS.D_ZONA,1 ,1)
FROM TEMPORAL_SEPOMEX TS
WHERE ID_SEPOMEX =:IDSepomex
INTO :SZona DO
BEGIN
INSERT INTO ZZ_SPM_COLONIAS
(ID_COLONIA, ID_ESTADO, ID_CLASE, ID_CIUDAD, ID_MUNICIPIO,
NOMBRE, REPARTO, SERVICIOS, OFICINA, ID_ASENTAMIENTO, CODIGO,
COR, ACTUALIZADO, ZONA)
VALUES(:NuevoId, :MSestado, '00', :IDCiudad, :InsertaMunicipio,
:CSColonia, NULL, 0 , :SCOficina, :IDAsentamiento, :SCodigo,
:CCor, CURRENT_TIMESTAMP, :SZona);
MUNICIPIOS_BASE =:NuevoID;
MUNICIPIOS_SEPOMEX =:MSestado;
EXISTENTES_BASE =:CSColonia;
EXISTENTES_SEPOMEX =: InsertaMunicipio;
END
END
END
END
END
END
END
END
END
END
END
SUSPEND;
END
ELSE
CONCATENADOS='realizar insercion de municipio';
END
ELSE
CONCATENADOS = 'Aqui se insertan los municipios';
FOR
SELECT MAX(ID_MUNICIPIO)
FROM ZZ_SPM_MUNICIPIOS
WHERE ID_ESTADO = 1
/*WHERE ID_ESTADO =:ECantidad*/
INTO :MaximoID DO
BEGIN
MAXID =:MaximoID;
NuevoId =:MaximoID + 1;
END
FOR
SELECT DISTINCT UPPER(TS.D_MUNICIPIO), SM.NOMBRE, TS.C_ESTADO
FROM TEMPORAL_SEPOMEX TS
LEFT OUTER JOIN ZZ_SPM_MUNICIPIOS SM
ON TS.D_MUNICIPIO = SM.NOMBRE
WHERE TS.C_ESTADO = 1 AND SM.NOMBRE IS NULL
/*WHERE TS.C_ESTADO =:ECantidad AND SM.NOMBRE IS NULL*/
INTO :MSepomex, :MBase, :MSestado DO
BEGIN
IF(:MBase IS NULL) THEN
BEGIN
INSERT INTO ZZ_SPM_MUNICIPIOS(
ID_MUNICIPIO,ID_ESTADO,NOMBRE,
RANGO1,RANGO2,RANGO3,RANGO4,RANGO5,RANGO6,RANGO7,RANGO8)
VALUES(:NuevoId, :MSestado, :MSepomex,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
FOR SELECT MAX(ID_CIUDAD)
FROM ZZ_SPM_CIUDADES
WHERE ID_ESTADO = :MSestado
INTO :MaximoID DO
BEGIN
MAXID =:MaximoID;
NuevoId =:MaximoID +1;
END
INSERT INTO ZZ_SPM_CIUDADES(
ID_CIUDAD,ID_ESTADO,NOMBRE,
RANGO1,RANGO2,RANGO3,RANGO4)
VALUES(:NuevoId, :MSestado, :MSepomex,
NULL,NULL,NULL,NULL);
END
ELSE
CONCATENADOS = 'No se encuentran municipios inexistentes';
END
SUSPEND;
END
END