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