Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1853743
  • 博文数量: 334
  • 博客积分: 11301
  • 博客等级: 上将
  • 技术积分: 3452
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-18 10:19
个人简介

路虽弥,不行不至;事虽少,不做不成。

文章分类

全部博文(334)

文章存档

2013年(4)

2012年(19)

2011年(27)

2010年(71)

2009年(45)

2008年(15)

2007年(84)

2006年(69)

分类: Oracle

2007-06-04 10:45:02

说明:红色为改进后的
 
1.改进性能
  create or replace delete_emp (emp_id number) as
    begin
      execute immediate 'delete from emp where empno =' || emp_id;
    end;
 
  create or replace delete_emp (emp_id number) as
    begin
      execute immediate 'delete from emp where empno = :arg1' using emp_id;
    end;
 
2.使用重复的占位符
   create or replace insert_test(a varchar2,b varchar2) as
     begin
       execute immediate 'insert into test(col1,col2,col3) values (:arg1,:arg2,arg1)' using a,b,a;
         
     end ;
 
  
   create or replace insert_test(a varchar2,b varchar2) as
     begin
       execute immediate 'insert into test(col1,col2,col3) values (:arg1,:arg2,arg1)' using a,b;  ---与前面的区别
    
     end ;
 
3.使用游标属性
   上面两个例子均使用隐性游标。
   create or replace query_emp as
     type table_id is table of emp.emp_id%type;
     type table_name is table of emp.emp_name%type;
     v_id table_id;
     v_name table_name;
   begin  
     execute immediate 'select emp_id,emp_name into v_id,v_name from emp';
    
     if sql%nofound then
        dbms_output.put_line('no data found');
     else
        dbms_output.put_line('有' || sql%rowcount ||'条记录!');
     end if;
   end;
 
 4.如何传递NULL
    create or replace update_emp as
     begin
        execute immediate 'update emp set dept_id = :arg1' using null;
     end;
   
    create or replace update_emp as
      a_null varchar2(2);
     begin
       execute immediate 'update emp set dept_id = :arg1' using a_null;
     end ;
 
 
阅读(1558) | 评论(0) | 转发(0) |
0

上一篇:异常处理(exception)

下一篇:The Oracle/PHP FAQ

给主人留下些什么吧!~~