日期:2014-05-16  浏览次数:20401 次

学习Oracle 的存储过程2

呵呵,继续学习吧,好记性不如懒笔头(是这么说的不?),现在用Oracle数据库的挺多的,但要想学好Oracle数据库也并不是一件太容易的事情呀,那就不断学习,不断总结吧,遇到什么问题,记下来再想办法解决它,那不就积少成多啦!

?

先说一下存储过程里的参数吧,

in? 参数是常量,不能改值,不写默认为in;

out参数必须是变量,可以改值

in out参数必须为变量,可以改值;

?

如果想在一个存储过程内调用另一个存储过程或函数,可以这么写

create or replace procedure onepro

is

???? v_i number :=2;? -----变量赋值

begin

????? biud_test(v_i);?? -----biud_test()为存储过程或函数名

end;

?

修改存储过程alter procedure 语句,但是它是用于重新编译或验证现有过程的,如果要修改过程定义,仍然用create或replace procedure命令,语法格式一样。

?

整个小例子吧

create or replace procedure update_info

(v_xm in char)

as

?? XF? number;

begin

? select ZXF

? into XF

?from XS

?where XM =v_xm;

?

if XF>60 THEN

????? update XS set BZ = ‘三好学生’where XM = v_xm;

end if;

?

if? XF<35 then

? update XS set BZ = '学分未修满' where XM = v_xm;

end if;

end update_info;

?

执行存储过程update_info

EXEC update_info('小二');

?

?

在整个吧!

?

创建名为select_students德存储过程,默认情况下,该过程是查询所有学生的信息,当该过程改为能检索计算机专业的学生信息时,用create or replace 重新定义。

?

(1)定义过程

create or replace procedure select_students

( cur out select.cur_07)

?

as

begin

??? open cur for

?????????? select xh,xm,zym,xb from XS

??????????????? order by XH;

end;

?

注意:使用查询包头时在select语句中不能用*标识符;

(2)修改过程

create or replace procedure select_students

(cur out select.cur_07)

as

begin

???? open cur for

???????? select xh,xm,zym,xb, from XS

???????? where ZYM = '计算机'

????????? order by XH;

end;

?

我感觉修改已有过程就是使用create or replace procedure 重新创建一个存储过程,保持名字和原来的一样。

?


我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html