Oracle存儲(chǔ)過(guò)程中將表名作為參數(shù),處理方法不同于Oracle帶參數(shù)存儲(chǔ)過(guò)程的執(zhí)行,從存儲(chǔ)過(guò)程的編寫(xiě)來(lái)看,將表名作為參數(shù)的存儲(chǔ)過(guò)程更為復(fù)雜一些。
實(shí)例代碼如下:
create procedure proc002(tblName in varchar2) is
tblnm char(50);
strsql char(250);
cursor c_fl is select * from it_fl;
begin
for cv_fl in c_fl loop
begin
tblnm:=tblname;
strsql:='update '||tblnm||' SET FL = '''||cv_fl.FL||''' WHERE OLDFL = '||cv_fl.OLDFL;
dbms_output.put_line(strsql);
execute immediate strsql;
end;
end loop;
commit;
end proc002;
如黑體部分('''為3個(gè)單引號(hào)),需要用到使用動(dòng)態(tài)sql,用execute immediate來(lái)實(shí)現(xiàn)。