Non riesco a convincere perché non è possibile aggiungere operazioni DML all'interno di Funzione Oracle in particolare all'interno del ciclo di cursore . Ritengo che Oracle non supporti l'operazione DML all'interno del ciclo del cursore.non può eseguire operazioni DML all'interno di una query
Come posso fare Se devo inserire nella tabella all'interno del ciclo del cursore? Crea una nuova procedura di memorizzazione al suo interno o qualcos'altro?
messaggio di errore: Impossibile eseguire l'operazione DML all'interno di una query
Ecco la mia funzione,
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;
Grazie, Questo è quello che sto chiedendo. – ppshein