Estou com uma dificuldade de fazer essa proc funcionar.. Quando eu executo o update separado funciona,mas quando executo pela procedure, não funciona.. Vocês conseguem me dizer porque?
Query update - funciona
UPDATE VPE_TB_RET2009_BLOQ_FAT B
SET FAT_SET10 = 'SIM'
WHERE EXISTS (SELECT DISTINCT A.ID_DO_CONCEITO_FATURAVEL FROM VPE_TB_FAT_SET10 A
WHERE B.ID_VANTIVE = A.ID_DO_CONCEITO_FATURAVEL
AND B.FIM_FAT = A.DTORIGEM);
CREATE OR REPLACE PROCEDURE ERICSSON.INSERT_FATUR_RETIDO AS
V_VPE_TB_FAT_SET10 VARCHAR2(16) := 'VPE_TB_FAT_SET10';
V_ID_VANTIVE VARCHAR2(10) := 'ID_VANTIVE';
V_FIM_FAT VARCHAR2(7) := 'FIM_FAT';
V_FAT_SET10 VARCHAR2(9) := 'FAT_SET10';
V_RET2009_BLOQ VARCHAR2(23) := 'VPE_TB_RET2009_BLOQ_FAT';
V_SQLTEXT VARCHAR2(2000);
BEGIN
V_SQLTEXT := ' UPDATE '|| V_RET2009_BLOQ ||' B SET '|| V_FAT_SET10 ||' = ''SIM'' WHERE EXISTS (SELECT DISTINCT A.ID_DO_CONCEITO_FATURAVEL FROM '|| V_VPE_TB_FAT_SET10 ||'A WHERE B.'|| V_ID_VANTIVE ||' = A.ID_DO_CONCEITO_FATURAVEL AND B.'|| V_FIM_FAT ||'A.DTORIGEM)';
EXECUTE IMMEDIATE ' UPDATE '|| V_RET2009_BLOQ ||' B SET '|| V_FAT_SET10 ||' = ''SIM''
WHERE EXISTS (SELECT DISTINCT A.ID_DO_CONCEITO_FATURAVEL FROM '|| V_VPE_TB_FAT_SET10 ||'A
WHERE B.'|| V_ID_VANTIVE ||' = A.ID_DO_CONCEITO_FATURAVEL
AND B.'|| V_FIM_FAT ||'A.DTORIGEM)';
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
DBMS_OUTPUT.PUT_LINE(V_SQLTEXT);
END;
/