Created
May 29, 2025 14:08
-
-
Save hotsoft-desenv2/f72ed18cbd91a16cbf306ec82c5b56b7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| SET TERM ^ ; | |
| CREATE OR REPLACE PROCEDURE ATUALIZA_CODIGOS_DUPLICADOS | |
| AS | |
| DECLARE VARIABLE v_codigo INTEGER; -- Tipo da coluna CODIGO | |
| DECLARE VARIABLE v_id INTEGER; -- Tipo da coluna ID | |
| DECLARE VARIABLE v_min_id INTEGER; -- Menor ID do grupo de duplicatas | |
| BEGIN | |
| -- Itera sobre os grupos de CODIGO com duplicatas | |
| FOR | |
| SELECT CODIGO | |
| FROM MINHA_TABELA | |
| GROUP BY CODIGO | |
| HAVING COUNT(*) > 1 -- Apenas grupos com duplicatas | |
| INTO :v_codigo | |
| DO | |
| BEGIN | |
| -- Encontra o menor ID do grupo para preservar | |
| SELECT MIN(ID) | |
| FROM MINHA_TABELA | |
| WHERE CODIGO = :v_codigo | |
| INTO :v_min_id; | |
| -- Itera sobre as linhas do grupo, exceto a com menor ID | |
| FOR | |
| SELECT ID | |
| FROM MINHA_TABELA | |
| WHERE CODIGO = :v_codigo | |
| AND ID <> :v_min_id | |
| INTO :v_id | |
| DO | |
| BEGIN | |
| -- Atualiza a linha com um novo valor do generator | |
| UPDATE MINHA_TABELA | |
| SET CODIGO = GEN_ID(GEN_CODIGO, 1) | |
| WHERE ID = :v_id; | |
| END | |
| END | |
| END^ | |
| SET TERM ; ^ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment