Oracle pl/sql學習 之 子程序 過程和函數 存儲過程 存儲函數

PL/SQL子程序 分爲 過程,方法等。他們的創建是放在緩衝區的,所以定義,執行後不能得到保存,重複使用。這樣就爲什麼會有了存儲過程 和 存儲函數了。這兩種今後學習。恩,™是進過編譯後存放在工作區的。額,繼續過程 和 方法。

一如既往,首先來看他們的定義

過程

函數

  procedure  過程名(參數1,參數2.....)

is

  變量聲明

begin

可執行部分

exception

異常處理部分

end;

 

  function 函數名(參數1,參數2.....)return 數據類型

is

  變量聲明

begin

可執行部分

return語句。

exception

異常處理部分

end;

從上面可以看出他們至少有三個區別:

1. 關鍵字不同  過程爲 procedure 函數爲 function ,廢話,但是procedure會寫嚒,羅嗦

2.函數是可以有返回值的,注意到了嚒,return 數據類型。

3.正因爲第二點,纔有了第三點,函數在可執行部分至少有一條return 語句。

如何使用,結合PL/SQL程序塊執行模式:

declare

 ......

begin

.......

end;

將上面定義放到declare部分,就可以用起來了。爲什麼不趕緊試試。

碼農們更多的使用到的可能是 存儲型的 過程和函數吧。那不妨接下來講講他們?

上面提到存儲過程和存儲函數他們是在創建後,經過系統編譯存放在oracle數據庫工作區中的,所以一次編譯,隨時運行。在建立之後就能隨時調用了,當然你必須得保證編譯通過了。也正是這個原因,所以存儲過程函數一旦新建後,不能修改,那怎麼做呢,只能刪掉重新建立了唄。

存儲過程的部分有三:一聲明部分、二執行部分、三異常處理部分(面試官最喜歡問的)

create or replace procedure  存儲過程名(參數1,參數2......) 

[authid current_user|definer]  --訪問控制, 選擇有二,當前用戶 和所有用戶

as                                           -- as  和遊標進行區別 is

 聲明部分;

begin

執行部分;

exception

異常部分;

end;

來點DBA知識,偷笑

A 授權 用戶執行:grant  execute on 存儲過程名 to 用戶名;

B 執行存儲過程:execute 過程名(實際參數);

C 刪除過程: drop 存儲過程名;

存儲函數 類似,他們不同點,能夠想到吧,想想子程序 過程和函數區別。

create or replace function  存儲函數名(參數1,參數2......)   return 返回值

[authid current_user|definer]  --訪問控制, 選擇有二,當前用戶 和所有用戶

as                                           -- as  和遊標進行區別 is

聲明部分;

begin

執行部分;

return 表達式;

exception

異常部分;

end;

看出來不同點了吧,看出來了吧。不說了。

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