pl-sql中函数循环插入值方式一

create or replace function F_TEST( p_type in number, p_startdate in varchar2, p_enddate in varchar2)
--type类型table_test
return table_test
pipelined is
pragma autonomous_transaction;--自动事物
--type类型row
v_row_test row_test;
type generic_cr is ref cursor;
cr_sqlcur generic_cr;--cursor类型
v_sql varchar2(4096);
--声明参数
v_orgcode varchar2(32);
v_orgname varchar2(128);

--根据不同类型,组合需要的sql
if p_type = 1 then
v_sql:='select * from table1 where
h.startdate > to_date('''||p_startdate||''',''yyyy-mm-dd'')-1
and h.enddate < to_date('''||p_enddate||''',''yyyy-mm-dd'')+1';
end if;


if p_type = 2 then
v_sql:='select * from table2 where
h.startdate > to_date('''||p_startdate||''',''yyyy-mm-dd'')-1
and h.enddate < to_date('''||p_enddate||''',''yyyy-mm-dd'')+1';
end if;

--新建一个表,两个字段,将sql插入到表中,方便查看sql
insert into test (msn) values (v_sql);
commit;

--打开循环--open loop fetch into
open cr_sqlcur for v_sql;
loop
fetch cr_sqlcur
into
v_orgcode,
v_orgname;

exit when cr_sqlcur%notfound;

--type row 整合输出的字段
v_row_test := row_test( v_orgcode,v_orgname);
-- 管道输出
pipe row(v_row_test);

end loop;--循环结束

close cr_sqlcur;
commit;
return;
end F_TEST;

--open loop fetch into
将值插入到自定义字段中--然后用管道输出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值