- 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