No puedo convencer por qué no puedo agregar operación DML dentro de Oracle Función especialmente dentro de cursor loop. Siento que Oracle no es compatible con la operación DML dentro del cursor loop.no se puede realizar la operación DML dentro de una consulta
¿Cómo puedo hacer si necesito insertar en la tabla dentro del bucle del cursor? ¿Crear un nuevo procedimiento de almacenamiento dentro de él o algo más?
mensaje de error: no puede realizar la operación DML dentro de una consulta
Aquí está mi función,
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;
Gracias, eso es lo que estoy pidiendo. – ppshein