您的位置:首页 > 数据库 > Oracle

oracle存储过程简单实例 变量赋值 游标遍历

2014-11-22 21:08 369 查看
应用场景:

有两张表,学生表和对应的各科成绩表。

学生表student

字段: id int
name varchar(20)

数值: 1 A

2
B

成绩表score

字段: id int studentid int subjectid int score int

数值:

1 1 1 80

2 1 2 90

3 1 3 100

4 2 1 60

5 2 2 70

用存储过程来通过名字获取对应学生的成绩最大值的科目名称。本例的逻辑比较简单,用一句sql就可以实现,这里只是演示存储过程的基本语法。

创建包package:

create or replace package max_type as

type max_cursor is ref cursor;

end;

创建存储过程procedure:

create or replace procedure getMaxScore

(

xname in varchar,

x_cur out MAX_TYPE.max_cursor

)

as

max_score number;

cur_score number;

cursor cur_1 is select score from score where studentid=(select id from student where name=xname);

begin

max_score := 0;

for everyrow in cur_1 loop

begin

if (everyrow.score > max_score) then

max_score := everyrow.score;

end if;

end;

end loop;

open x_cur for select max_score from student where rownum=1;

end getMaxScore;

调用存储过程:

SQL>var a refcursor;

SQL>call getMaxScore('A', :a);

SQL>print a

输出结果:

100
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: