Oracle的PL SQL 函式 過程 包 觸發器

2021-10-07 09:34:20 字數 1495 閱讀 9222

sql語言只是一種訪問、運算元據庫的語言,並不能進行程式設計。pl/sql(procedual language/sql)過程化sql語言是oracle在標準sql語言基礎上進行擴充套件後形成的程式語言。是一種oracle獨有的、支援應用開發的語言。

普通的pl/sql程式都是匿名的,比如:

declare

id int

; name varchar2(10)

;begin

insert

into student (id, name)

values(1

,'小明');

end;

commit

;

缺點就是每次執行的時候都需要進行編譯,沒有儲存在資料庫中。

oracle允許在資料庫內部建立並儲存編譯過的pl/sql程式,以便隨時調出使用。這類程式包括過程、函式、包、觸發器。可以將業務邏輯寫成過程或函式儲存到資料庫中,更方便進行呼叫。

比如函式:

create

function newperson(id int

, name varchar2)

return varchar2

as this_id int

; this_name varchar2(10)

;begin

this_id := id;

this_name := name;

insert

into student (id, name)

values

(this_id, this_name)

;return

'success'

;end

;

執行:

declare

re varchar2(10)

;begin

re := newperson(2,

'小紅');

end;

但是這種程式的缺點就是不同資料庫的語法各不相同,導致可移植性很差。

這種程式簡單說就是呼叫的時候,傳入乙個引數,然後根據業務,對這個引數進行各種計算,中間還可以進行sql查詢,最終得到乙個值,可以作為返回值或者輸出到控制台或者直接儲存起來。

過程與函式最大的區別就是,過程沒有返回值,函式有返回值。

程式包簡稱包(package),是將變數、常量、過程、函式、游標、異常組織在一起,作為乙個整體儲存在資料庫中,用名稱來標識包。類似於物件導向的類。

與過程、函式的區別主要在於,觸發器是在某些事件發生的時候,由oracle自動執行。

常用的觸發事件如對於表或檢視,進行insert、delete、update操作時,會被執行。

觸發時機有before、after。

觸發器一般與序列一塊使用,用於主鍵自增id。

序列是資料庫中的乙個物件,可以為表中的行自動產生序列號,利用它可以生成唯一的整數。乙個序列的值是由oracle程式自動生成。

oracle中游標,函式,過程的例子

關於 游標 if,for 的例子 create or replace procedure peace if is cursor var c is select from grade begin for temp in var c loop if temp.course name os then db...

方法 函式 過程

封裝了一段邏輯 或者實現特定的功能 方法可以重複被呼叫 增加了 的復用 提公升開發效率 方法五要素 修飾詞 返回值型別 方法名 引數列表 main函式 public static void main string args 修飾詞 public static 返回值型別 void 表示該函式沒有返回...

oracle 中對函式,過程進行加解密

wrap工具是oracle用來加密procedure function package和type的工具,使用wrap加密後,pl sql 變得無法閱讀,但是oracle可以執行加密後的pl sql 需要注意wrap加密後,沒有辦法還原,因此如果在資料庫中建立的過程或函式是加密的,那麼如果以後需要修改...