PL/SQL中的EXECUTE IMMEDIATE疑问

来源:百度知道 编辑:UC知道 时间:2024/06/07 17:21:35
我网上也查过资料,这是我对它的理解,请大侠看看对不对
declare
l_routin varchar2(100) := 'gen2161.get_rowcnt';
l_tblnam varchar2(20) := 'emp';
l_cnt number;
l_status varchar2(200);
begin
execute immediate 'begin ' || l_routin || '(:2, :3, :4); end;'
using in l_tblnam, out l_cnt, in out l_status;

if l_status != 'OK' then
dbms_output.put_line('error');
end if;
end;

EXECUTE IMMEDIATE总的来说是为了提升语句性能的,在上面的语句中,:2, :3, :4对应的参数分别是l_tblnam,l_cnt,l_status
我想请教的是这三个参数前面的in , out, in out分别是什么意思

in 表示输入参数 out 表示输出参数
也就是说
execute immediate 'begin ' || l_routin || '(:2, :3, :4); end;'
using in l_tblnam, out l_cnt, in out l_status;

dbms_output.put_line(l_cnt);

可以打印出过程执行后的返回结果 l_cnt