PLSQL中的存儲過程與函數

1.存儲過程與函數概述
PL\SQL塊分類:匿名塊、命名塊
匿名塊:不保存在數據庫中,沒有名稱,不可以重複調用;
命名塊:保存在數據庫中,有名稱,可以重複調用;
包括存儲過程、函數、觸發器、包;
存儲過程與函數:都是一個子程序,完成一定的功能;
存儲過程:沒有返回值,可以獨立調用;
函數:必須包含一個返回值,只能作爲表達式的一部分使用;

eg:(存儲過程)
create procedure pro1(dno number)
is
cursor cur is select * from emp where deptno=dno;
begin
for r in c loop
dbms_output.put_line(r.name ||':' |r.sal|);
end loop;
end;

調用:
begin
pro1(10);
end

(函數)
create function func(dno number)
return number
is
v_max number;
begin
select max(sal) into v_max;
from emp;
where deptno=dno;
return v_max;
end;

函數調用:
declare
v_maxsal number;
begin
v_maxsal:=func(10);
end;
2.存儲過程和函數的創建
eg:(in 類型參數和out 類型參數)
create or replace procedure procin(dno in number,ret out number)
is
v_maxsal number;
begin
select max(sal) into v_maxsal
from emp
where deptno=dno;
out:=v_maxsal;
end;

調用:
declare
retnum number;
begin
procin(10,retnum);
dbms_output.put_line(retnum);
end;

函數的創建:
create function addnum(no1 number,no2 number)
return number
is
v_result number;
begin
v_result:=no1+no2;
return v_result;
end;

調用:
begin
dbms_output.put_line(addnum(10,20));
end;
3.存儲過程與函數的調用和刪除
存儲過程調用:
PL/SQL塊:proc[(arg1,...)]
直接調用:begin
proc[(arg1,...];
end;
函數調用:
PL/SQL塊:variable:=func[(arg1,...)];
直接調用:使用形式與其他sql中函數相同;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章