PL/SQL中返回记录集的一个例子

本文介绍了一个Oracle存储过程的示例,该过程用于从多个表中收集数据,并将结果整理成报告形式。其中包括使用游标、条件语句及存储过程的调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE OR REPLACE package my_pack as
TYPE p_cursor 
IS REF CURSOR;
end;


CREATE OR REPLACE procedure server_check_report_pro(p_cursor out my_pack.p_cursor)
is
vlevel 
number;
vre 
varchar2(3000);
cursor c1 is
select * from server_dbcheck_list;
begin
delete from server_check_report;
for c in c1
loop
server_getlogbyip(c.ip,vre,vlevel);
insert into server_check_report (ip,check_item,check_order,error_level,detail)values
(c.ip,
'OS DB Log Check',0,vlevel,substr(vre,1,2999));
end loop;
insert into server_check_report(ip,check_item,check_order,error_level,detail)
select a.ip,'Disk Spaces Check',1,nvl(b.error_level,0),nvl(b.remark,'')
from server_dbcheck_list a,server_logcheck_logs b
where a.ip=b.ip(+)
and error_level(+)>0
and id(+)=4;
insert into server_check_report (ip,check_item,check_order,error_level,detail)
select a.ip,a.tns_name||':'||b.LOG_INFO check_item,2,nvl(b.error_level,0) error_level,decode(nvl(b.error_level,0),0,'',replace(replace(b.value_list,'####',','),'"','')) remark
from server_dbcheck_list a,server_dbcheck_logs b
where a.ip=b.ip(+)
and a.tns_name=b.tns_name(+)
and error_level(+)>0
and b.id(+)=1;
commit;
open p_cursor for 'select * from server_check_report order by ip,check_order';
end;
/

 如何取得紀錄集呢,打開SQLProgress,登陸進去,點菜單"advance"-->exec func/prod ...在彈出的框中輸入procedure的名字,和參數,直接點OK就可以看到結果.具體操作可以看看SQLProgress的幫助.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值