(转)oracle 存储过程 带游标作为OUT参数输出
(转)oracle 存储过程 带游标作为OUT参数输出
存储过程返回OUT参数的游标 例子。
存储过程 用系统默认的 sys_refcursor 游标类型 定义变量就OK了
--=====================================================
Sql代码 :
--PL/SQL Code (包中带过程) 过程带游标的OUT参数,返回游标(ref cursor)
create or replace package my_pack as
type my_ref_cursor is ref cursor;
procedure getMyCursor(val out my_ref_cursor);
end my_pack;
create or replace package body my_pack as
procedure getMyCursor(val out my_ref_cursor)
is
begin
open val for select * from student;
end;
end my_pack;
--=====================================================
Sql代码 :
--PL/SQL Code(存储过程) 带游标的OUT参数,返回游标(ref cursor)
create or replace procedure retCursor(ret_cursor out sys_refcursor)is
ret_cursor_value sys_refcursor;
begin
open ret_cursor_value for select * from student;
ret_cursor:=ret_cursor_value;
end retCursor;
--=====================================================
下面是个每个学生求平均值的存储过程。遇到的问题是带参数游标中的变量名字不要和表中的一样,否则会出问题
create or replace procedure prc_student_avg_score
as
cursor c_sno is select s.sno , s.name from STUDENT s; --查询学生表的ID
cursor sc_avg(s_no varchar2) is select avg(sc.degree) from SCORE sc where sc.sno=s_no; --通过学生ID查询平均成绩
s_sno_j student.sno%type; --变量ID
sc_avg_i score.degree%type; --变量平均成绩
sname student.name%type;
begin
open c_sno;--打开查询ID的游标
loop
fetch c_sno into s_sno_j ,sname ;
--DBMS_OUTPUT.PUT_LINE( ' c_sno当前扫描行:' || c_sno%rowcount );
exit when c_sno%notfound;
open sc_avg(s_sno_j); --打开查询平均成绩的游标,参数为学生ID
loop
fetch sc_avg into sc_avg_i;
if sc_avg_i is null or sc_avg_i=0 then
sc_avg_i:=0 ;
end if;
exit when sc_avg%notfound;
DBMS_OUTPUT.PUT_LINE( sname || ':' ||sc_avg_i);
end loop;
close sc_avg;
end loop;
close c_sno;
end prc_student_avg_score;
(转)oracle 存储过程 带游标作为OUT参数输出的更多相关文章
- oracle存储过程和游标的使用
oracle存储过程和游标的使用 (2011-04-19 14:52:47) 转载▼ 游标: 用来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情 ...
- MySQL存储过程带in和out参数
MySQL存储过程带in和out参数 最简单的例子: [html] mysql> DELIMITER $$ mysql> USE test $$ Database changed mysq ...
- Java调用oracle存储过程通过游标返回临时表数据
注:本文来源于 < Java调用oracle存储过程通过游标返回临时表数据 > Java调用oracle存储过程通过游标返回临时表数据 项目开发过程中,不可避免的会用到存储过程返回结 ...
- oracle存储过程(带参数的存储过程)
带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(e ...
- Oracle存储过程、游标、函数
SQL99是什么 (1)是操作所有关系型数据库的规则 (2)是第四代语言 (3)是一种结构化查询语言 (4)只需发出合法合理的命令,就有对应的结果显示 SQL的特点 (1)交互性强,非过程化 (2)数 ...
- myBatIs.Net 调用Oracle 存储过程返回游标
找了好久,网上也没示例,全是java的,没办法,后来看到一个网上别人写的例子. http://www.myfirm.cn/blog/article/Control/13.html 上面照套还是出错,我 ...
- Oracle存储过程返回游标实例详解
复制代码 代码如下:CREATE OR REPLACE PROCEDURE PROCSENDEMAIL(P_TXT VARCHAR2, P_SUB VARCHAR2, P_SENDOR VARCHAR ...
- Oracle存储过程 使用游标、数组的配合查询
查询输入的门牌号码是否在标准门牌库中存在.存在则返回相应的号码. public string GetValidate(){ OracleConnection conn = ConnectOra(); ...
- oracle存储过程和游标参考
oracle open cursor forhttp://www.itpub.net/thread-1874683-1-1.html
随机推荐
- vs extension
优先级高低
- Qt报表控件NCReport教程:报表创建示例
NCReport是 一款10多年时间的老牌报表控件,最初是在2002年时作为qt3的应用程序的一个联合项目,后来就成为了一个独立的GPL项目.现在的NCReport 是一款轻量级.快速.多平台.简单易 ...
- Upload file
<h3>Upload File</h3> <form action="@Url.Action("Upload","UploadCo ...
- textarea 多行文本保存数据到DB,取出后恢复换行
Steps: 1.保存到数据库之前把textarea中的换行字符转换为<br>. var dbStr = textareaStr.replace(/\n|\r\n/g,"< ...
- Hadoop之为何不使用RAID?
一.引言: 在一次和同事的讨论中遇到一个这样的问题:有一个hadoop集群,在hbase的put数据出现瓶颈,他们想要把datanode上的磁盘做成RAID 0(比如10块磁盘做成一个RAID 0), ...
- Java 泛型和通配符解惑
转自:http://www.linuxidc.com/Linux/2013-10/90928.htm T 有类型 ? 未知类型 一.通配符的上界 既然知道List<Cat>并不是Lis ...
- php 全角半角转换
<?phpheader("Content-type: text/html; charset=utf-8");// 第一个参数:传入要转换的字符串// 第二个参数:取0,半角转 ...
- 内部类 & 泛型
内部类 主要作用 1. 内部类, 主要用于事件监听的方法实现.2. 用于多继承 注: 主要还是 1 用的比较多. 参考 : head first java (第12章) 泛型 head first j ...
- ThinkPHP配置信息
在index.php文件中设置常量: define('BIND_MODULE', 'Home'); 进行绑定默认访问的模块. 同样的,也可以在配置文件config.php中的配置数组中设置配置常量: ...
- CSS 3 阴影,倒影,渐变
盒子阴影 box-shadow:盒子的阴影 第一个参数:设置的是阴影的水平偏移量 第二个参数:设置的是阴影的垂直偏移量 第三个参数:设置阴影的模糊程度 第四个参数:设置阴影外延值 第五个参数:阴影的颜 ...