Nie mogę przekonać się, dlaczego nie mogę dodać operacji DML wewnątrz Funkcja Oracle, szczególnie wewnątrz pętli kursora. Uważam, że Oracle nie obsługuje operacji DML w pętli kursora.Nie można wykonać operacji DML wewnątrz zapytania
Jak zrobić, jeśli muszę wstawić do tabeli wewnątrz pętli kursora? Utwórz nową procedurę składowania wewnątrz lub coś innego?
komunikat o błędzie: nie mogą wykonywać operacji DML wewnątrz zapytania
Oto moja funkcja,
CREATE OR REPLACE FUNCTION TEST_FUNC(U_ID IN VARCHAR2)
RETURN VARCHAR2
IS
V_MESSAGE VARCHAR2(30);
CURSOR C_PERSON (V_ID VARCHAR2) IS
SELECT NAME_UPPER
FROM TBL_PERSON
WHERE NAME_UPPER = V_ID;
BEGIN
FOR C_PERSON_CURSOR IN C_PERSON(U_ID)
LOOP
INSERT INTO TMP_PERSON(NAME) VALUES (C_PERSON_CURSOR.NAME_UPPER);
END LOOP;
RETURN V_MESSAGE;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);
END;
Dzięki, to co pytam. – ppshein