レコード型(索引別)の列にアクセスする構文を探しています。以下はサンプルコードです。 V_Emprecレコードタイプからempidが必要なDeclareブロックのUpdateスクリプトをどのように実行すればいいですか?私は同じパラメータ(empid)を必要とするprocを作成しました。一括収集とForAll - Oracle
これは%Rowtypeを使用して行うことができますか、emp_stage.empid%typeを使用して型を作成する必要がありますか? Empidの2つのTYPESを作成し、emp_stg.column_name%typeとしてEnameを使用している場合、これらを使用してRowtype v_emprecを使用してInsertスクリプトを置き換えることはできますか?
これを行うには構文を教えてください。
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を挿入と更新に使用する方法を知るための構文を覚えていますので、ロジックを無視してください。とにかく、コードをテストして、Insertが正常に動作しています。あなたの2番目のポイントを本当に理解していない。 – Abhi