我正在尋找從記錄類型(索引表)訪問列的語法。以下是示例代碼。我該如何在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