Oracle存储过程中将表名作为参数,处理方法不同于Oracle带参数存储过程的执行,从存储过程的编写来看,将表名作为参数的存储过程更为复杂一些。
实例代码如下:
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个单引号),需要用到使用动态sql,用execute immediate来实现。
发表评论