日期:2014-05-16 浏览次数:20425 次
呵呵,继续学习吧,好记性不如懒笔头(是这么说的不?),现在用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 重新创建一个存储过程,保持名字和原来的一样。
?