oracle儲存過程包含三部分:過程
宣告,執行過程部分,儲存過程異常。
oracle儲存過程可以有無引數儲存過程和帶引數儲存過程。
一、無參程式過程語法
1create
orreplace
procedure
noparpro2as
3begin
4 5 exception
//儲存過程異常6
7end;8
二、帶參儲存過程例項
1create
orreplace
procedurequeryempname(sfindno emp.empno
%type) as2
sname emp.ename
% type;
3sjob emp.job
% type;
4begin
5 .... 7
exception
....
14end;15
三、
帶引數儲存過程含賦值方式
1create
orreplace
procedurerunbyparmeters
(isal
inemp.sal
% type,
sname out
varchar
,sjob
inout
varchar
)2asicount
number
;3begin
4select
count(*
) intoicount
fromemp
wheresal
>
isal
andjob
= sjob;
5ificount=1
then
6 .... 9
else
10 ....
12endif;13
exception
14whentoo_many_rows
then
15dbms_output.put_line(
'返回值多於1行
' );
16whenothers
then
17dbms_output.put_line(
'在runbyparmeters過程中出錯!
' );
18end;19
四、在oracle中對儲存過程的呼叫
過程呼叫
方式一1
declare
2realsal emp.sal
% type;
3realname
varchar(40
);4realjob
varchar(40
);5begin
//儲存過程呼叫開始
6realsal:
=1100
;7realname:=''
;8realjob:='
clerk
' ;
9runbyparmeters(realsal,realname,realjob);
-- 必須按順序
10dbms_output.put_line(realname||'
'||realjob);
11end
; //過程呼叫結束12
過程呼叫方式二
1declare
2realsal emp.sal
% type;
3realname
varchar(40
);4realjob
varchar(40
);5begin
//過程呼叫開始
6realsal:
=1100
;7realname:=''
;8realjob:='
clerk
' ;
9runbyparmeters(sname
=>
realname,isal
=>
realsal,sjob
=>
realjob); --
指定值對應變數順序可變
10dbms_output.put_line(realname||'
'||realjob);
11end
; //過程呼叫結束12
oracle 含參帶游標的儲存過程
系統中有個模組的基礎資料需要導到資料庫,由於資料量比較大,而且 內容分布較凌亂。就先將資料匯入臨時表,然後根據臨時表進行有效的檢索並新增到對應的表中。今天下午寫了個含有引數,帶游標的儲存過程。算是把這個問題給解決了。本人需求大致如下 現有臨時表 sheet1 資料是直接從excel的sheet1中讀...
oracle儲存過程 帶引數的儲存過程
帶引數的儲存過程 舉例 為指定的員工漲100元的工資,列印漲前和漲後的工資 如果帶參,需要指定是輸入引數還是輸出引數 create orreplace procedure raisesalary eno in number as 定義乙個變數儲存漲前的薪水,引用emp中sal的型別作為psal的型別...
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...