以下は私の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: 値が多すぎます
私の場合、すべての列をRECORD
TYPE で宣言する必要はないため、宣言の列数を減らしてみましたRECORD TYPE
。そのような行動の特定の理由はありますか?