tôi không thể thuyết phục lý do tại sao tôi không thể thêm hoạt động DML bên Oracle Chức năng đặc biệt bên trong con trỏ vòng lặp. Tôi cảm thấy Oracle không hỗ trợ hoạt động DML bên trong vòng lặp con trỏ.không thể thực hiện thao tác DML bên trong một truy vấn
Làm cách nào tôi có thể thực hiện Nếu tôi cần chèn vào bảng bên trong vòng lặp con trỏ? Tạo thủ tục lưu trữ mới bên trong nó hoặc cái gì khác?
Thông báo Lỗi: không thể thực hiện thao tác DML bên trong một truy vấn
Đây là chức năng của tôi,
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;
Cảm ơn, Đó là những gì tôi đang yêu cầu. – ppshein