我正在寻找从记录类型(索引表)访问列的语法。以下是示例代码。我该如何在V_Emprec记录类型中运行需要empid的Declare块下面的Update脚本。我创建了一个需要相同参数(empid)的proc。批量收集和ForAll - Oracle
这可以使用%Rowtype来完成,或者我需要使用emp_stage.empid%type来创建类型吗? 如果我创建Empid和Ename的2个类型为emp_stg.column_name%类型,我可以使用这些来替换使用Rowtype v_emprec的插入脚本吗?
请告诉语法来做到这一点。
create table emp_master(empid number, ename varchar2(50));
create table emp_stage (empid number, ename varchar2(50));
create procedure update_emp_name(P_empid in emp_master.empid%type)
is
begin
Update emp_stage set ename =INITCAP(ename) WHERE EMPID =P_empid;
commit;
end;
Declare
Type emprec is table of emp_master%rowtype index by pls_integer;
v_emprec emprec;
Begin
Select empid,ename bulk collect into v_emprec from emp_master;
ForAll i in 1..v_emprec.count
Insert into emp_stage values v_emprec(i);
Update emp_stage set ename =INITCAP(ename) WHERE EMPID =v_emprec.empid(i);
/*Need Correct Syntax to use empid from the v_emprec type*/
update_emp_name();
commit;
End;
感谢
我只是在学习如何使用Type来插入和更新的语法,所以请忽略逻辑。无论如何,我测试的代码和插入工作正常。没有真正理解你的第二点。 – Abhi