Oracle儲存過程呼叫帶參的儲存過程

2021-08-01 15:12:52 字數 2332 閱讀 6261

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返回的個數一樣...