Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia amigos,
me deparei com um problema estou criando uma procedure que precisa criar uma PK em uma tabela ja existente e apos isso realizar um insert porem quando existe um dado duplicado por algum motive a exception DUP_VAL_ON_INDEX NAO FUNCIONA o insert funcionou mas quando testo uma situacao de duplicacao eu recebo um erro oracle 02260 e diz que a tabela somente pode ter uma PK porem a exception deveria tartar o erro ,
eu vou deixar o codigo a baixo par se alguem puder me ajudar isso
desde ja agradeco a todos,
CREATE OR REPLACE PROCEDURE MANUAL_CLIENT_INSERT_FIP AS
Y_CONT NUMBER := 0;
W_CONT NUMBER;
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE TEMP_FIP_CLIENT_HISTORIC
ADD PRIMARY KEY (CLIENTKEY)';
FOR REG IN (SELECT LOADDATE,
CLIENTKEY,
CLIENTSEGMENT,
CLIENTNAME,
'UK' AS COUNTRY,
'FIP' AS PROGRAM,
'TPL' AS COVERAGE
FROM TEMP_FIP_CLIENT_HISTORIC
)
LOOP
BEGIN
W_CONT := NVL(W_CONT, 0)+ 1;
DBMS_OUTPUT.PUT_LINE('RECORDS' ||'-'|| W_CONT ||' '||REG.LOADDATE||' '||REG.CLIENTKEY||' '||REG.CLIENTSEGMENT||' '|| REG.CLIENTNAME||' '||'UK'||' '||'FIP'||' '||'TPL');
INSERT INTO GV_MANUAL_CLIENT(LOADDATE, CLIENTKEY, CLIENTSEGMENT, CLIENTNAME, COUNTRY, PROGRAM, COVERAGE )
VALUES (SYSDATE, REG.CLIENTKEY, REG.CLIENTSEGMENT, REG.CLIENTNAME, REG.COUNTRY, REG.PROGRAM, REG.COVERAGE);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
DBMS_OUTPUT.PUT_LINE(W_CONT ||' '||'DUPLICATE KEY');
END;
END LOOP;
END;Carregando comentários...