下面是我的emp
表的结构:
Name Null? Type
------------------ -------- ------------
EMP_ID NOT NULL NUMBER
EMP_NAME VARCHAR2(20)
DEPT_ID NUMBER
AGE NUMBER
SEX VARCHAR2(5)
如果我使用以下RECORD TYPE
定义,那么它可以工作:
declare
type rec_emp is record(empid emp.emp_id%TYPE, empname emp.emp_name%type, empdept emp.dept_id%type, empage emp.age%type, empsex emp.sex%type);
v_emprecord rec_emp;
begin
v_emprecord.empid := 11;
v_emprecord.empname := 'Alen';
v_emprecord.empdept := 2;
v_emprecord.empage := 27;
v_emprecord.empsex := 'M';
update emp set ROW = v_emprecord where emp_id = 11;
dbms_output.put_line('Rows Updated: ' || sql%rowcount);
end;
但同样,如果我尝试这段代码,那么它就不起作用(这里我减少了RECORD TYPE
变量中的列数):
declare
type rec_emp is record(empname emp.emp_name%type, empdept emp.dept_id%type);
v_emprecord rec_emp;
begin
v_emprecord.empname := 'Alen';
v_emprecord.empdept := 2;
update emp set ROW = v_emprecord where emp_id = 11;
dbms_output.put_line('Rows Updated: ' || sql%rowcount);
end;
错误是:PL/SQL: ORA-00913: too many values
就我而言,我不需要在RECORD
TYPE 上声明所有列,因此尝试减少RECORD TYPE
声明中的列数。这种行为有什么具体原因吗?