加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

execute immediate 的用法

发布时间:2020-12-12 14:21:19 所属栏目:百科 来源:网络整理
导读: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
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




??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读