首页 > 数据库技术 > 详细

Oracle 存储过程,临时表,动态SQL测试

时间:2015-04-04 16:25:29      阅读:302      评论:0      收藏:0      [点我收藏+]
--创建事务级别的结果临时表
create global temporary table tmp_yshy(
 c1 varchar2(100),
 c2 varchar2(100)
)on commit delete rows;
--创建事务级别的存储sql语句的临时表
create global temporary table tmp_sql(
 c1 varchar2(4000)
)on commit delete rows;

测试表:

-- Create table
create table T_USER
(
  NAME VARCHAR2(20),
  AGE  NUMBER
)
--首先建包
create or replace package pack_user 
as
  -- 1:根据年龄查询所有用户
  procedure p_user_select(
    av_age        number,        --年龄
    av_suc out    varchar2       --是否成功标识  
  );

end pack_user;
--创建包体
create or replace package body pack_user
as
 --1:根据年龄查询所有用户
 procedure p_user_select(
   av_age         number,
   av_suc out     varchar2
 )
 as
   lv_sql         varchar2(4000);
 begin
   av_suc:=T;
   
   lv_sql:= insert into tmp_yshy(c1,c2) ||
            select name,age ||
            from t_user ||
            where age >||av_age;
   
   insert into tmp_sql(c1) values(lv_sql||;);
   
   execute immediate lv_sql;
   
   exception 
     when others then
       rollback;
       av_suc:=F|| ||to_char(sqlcode)|| : ||sqlerrm;
       dbms_output.put_line(av_suc);
 end p_user_select;
 
end pack_user;

PL/SQL Developer SQLWindow测试:

 declare 
    a varchar2(100);
 begin 
    pack_user.p_user_select(25,a);
 end;
select * from tmp_yshy;
select * from tmp_sql;

 

Oracle 存储过程,临时表,动态SQL测试

原文:http://www.cnblogs.com/yshyee/p/4392328.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!