【发布时间】:2019-03-08 20:01:21
【问题描述】:
我想删除记录类型中列 (emp_sal) 有 5000+ 的元素,但它给了我一个错误。我不知道我是否将 .DELETE 方法放在正确的区域。 代码:
DECLARE
TYPE rec IS RECORD (
emp_id HR.EMPLOYEES.EMPLOYEE_ID%TYPE,
emp_fname HR.EMPLOYEES.FIRST_NAME%TYPE,
emp_lname HR.EMPLOYEES.LAST_NAME%TYPE,
emp_job HR.EMPLOYEES.JOB_ID%TYPE,
emp_sal HR.EMPLOYEES.SALARY%TYPE );
TYPE rec_table IS TABLE OF rec;
rec_list rec_table := rec_table();
BEGIN
SELECT HR.EMPLOYEES.EMPLOYEE_ID,
HR.EMPLOYEES.FIRST_NAME,
HR.EMPLOYEES.LAST_NAME,
HR.EMPLOYEES.JOB_ID,
HR.EMPLOYEES.SALARY
BULK COLLECT INTO rec_list
FROM HR.EMPLOYEES;
FOR i IN rec_list.FIRST..rec_list.LAST LOOP
IF (rec_list(i).emp_sal > 5000) THEN
rec_list(i).DELETE();
END IF;
DBMS_OUTPUT.PUT_LINE('element: '||i||' '||
'emp id: '||rec_list(i).emp_id||
' full name: '||rec_list(i).emp_fname||
' '||rec_list(i).emp_lname||
' job: '||rec_list(i).emp_job||
' salary: '||rec_list(i).emp_sal);
END LOOP;
END;
输出:
ORA-06550: line 28, column 20: PLS-00302: component 'DELETE' must be declared
谢谢!
【问题讨论】:
标签: sql oracle plsql oracle11g plsqldeveloper