ORACLE 执行语句execute immediate 的用法

create or replace procedure proc_test(v_item in varchar2)
 as
 v_sql varchar2(2000):=''; --执行的sql
 v_num number(9);         --员工人数
 v_dname varchar2(200); --部门名称
begin
  --execute immediate用法1:立即执行sql
 v_sql:='select * from emp';
 execute immediate v_sql;
 dbms_output.put_line('execute immediate用法1执行成功!');
  --execute immediate用法2:立刻执行sql语句,并赋值给某个变量
 v_sql:='select count(*) from emp';
 execute immediate v_sql into v_num;
dbms_output.put_line('execute immediate用法2执行成功!员工总数:'||v_num);
--execute immediate用法3:立刻执行sql语句,并赋值给某个变量
 v_sql:='select dname from dept where deptno = :1 ';
 execute immediate v_sql into v_dname using v_item ;
 dbms_output.put_line('execute immediate用法3执行成功!'||v_item||'部门名称为:'||v_dname);
--异常处理
exception
  when OTHERS then
    begin
    dbms_output.put_line('sqlcode:'||sqlcode);
    dbms_output.put_line('sqlerror:'||SUBSTR(SQLERRM, 1, 200));
    dbms_output.put_line('error in line:'||DBMS_UTILITY.format_error_backtrace);
    end;
end proc_test;

在scott用户中创建上面存储过程:

执行存储过程:

begin

proc_test('20');

end;

/

结果:

execute immediate用法1执行成功!

execute immediate用法2执行成功!员工总数:14

execute immediate用法3执行成功!20部门名称为:RESEARCH

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值