PL/SQL中返回记录集的一个例子
2008-01-23 11:58
519 查看
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的幫助.
相关文章推荐
- 一个简单的PL/SQL的例子
- PL/SQL小技巧一个:在子类中怎么调用父类被重载的方法
- 一个通过Oracle8i存储过程,返回记录集的程序包(存储过程)
- SQL 游标 一个简单的例子
- SQLQuery 查询Oracle char类型返回一个字符有关问题
- 一个简单的sql的游标处理结果集的例子
- sqlplus的基本使用例子(关闭并重启数据库)和连接一个数据库
- SQL中返回一个字符串在另一个中存在的次数
- 一个简单的LINQ TO SQL的三层架构的例子
- 学习pl/sql(语句块)的几个例子
- PL/SQL 存储过程入门小例子
- SQL优化基础:使用索引(一个小例子)
- 一个简单的演示SQL2005的查询通知的例子
- SQL中函数返回表,传递一个参数,无法唤醒用户自定义函数,解决方法!
- Spring MVC + Mybatis 一个简单的例子 — 返回Json数据
- Linq to sql+WCF服务 的一个分层构架的留言簿例子
- 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,关于触发器SQL语句,完美解决
- 一个动态sql的例子
- 如何从 PL/SQL 存储函数返回数组
- oracle实验31:使用PL/SQL,书写一个最简单的块