【发布时间】:2013-06-16 09:47:09
【问题描述】:
下面是我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 声明中的列数。这种行为有什么具体原因吗?
【问题讨论】:
标签: sql database oracle plsql oracle10g