PL SQL 過程和函數的完整指南

已發表: 2023-01-30
PL SQL 過程和函數的完整指南

編程語言是一種用於編寫計算機程序的系統。 雖然許多編程語言是基於文本的,但其他語言也可能是圖形化的。 這些語言幫助程序員與計算機進行交流。 結構化查詢語言 (SQL) 就是這樣一種編程語言,它有助於存儲、操作和檢索存儲在關係數據庫中的數據。 在今天的指南中,我們將分享有關執行作為 PL SQL 子程序的名稱塊(過程和函數)的詳細信息。 因此,如果您一直在尋找有關 PL SQL 過程和函數的詳盡指南,那麼您來對地方了。 在本文檔中,除了涵蓋 PL SQL 存儲過程主題外,您還將了解 PL SQL 過程示例。 更不用說 PL SQL 調用過程、PL SQL 退出過程和 PL SQL 函數示例,如果您是新手程序員,學習這些內容同樣重要。 因此,讓我們開始使用我們關於 PL SQL 的詳盡指南。

PL SQL 過程和函數的完整指南

內容

  • PL SQL 過程和函數的完整指南
  • 什麼是 PL SQL?
  • 什麼是 PL SQL 中的過程和函數?
  • 如何在 PL SQL 中創建存儲過程和函數?
  • PL SQL 中存儲過程和函數的優點
  • 創建存儲過程的語法
  • PL SQL 過程示例
  • 在 PL SQL 中創建函數的語法
  • PL SQL 函數示例
  • 什麼是 PL SQL 退出過程?
  • 存儲過程和函數過程的區別

PL SQL 過程和函數的完整指南

在這裡,我們通過示例詳細展示了 PL SQL 過程和函數。

什麼是 PL SQL?

  • PL SQL 是對 SQL 的過程語言擴展的縮寫形式。
  • PL SQL 是一種面向程序員的塊結構語言,可幫助他們將 SQL 的強大功能過程語句相結合。
  • 它是甲骨文公司的程序擴展。
  • 這種過程語言在Oracle數據庫、 Times Ten內存數據庫和IBM Db2中可用。
  • 在運行時,PL/SQL 和 SQL 通過在同一個服務器進程中運行來帶來最佳效率。
  • PL SQL通過增強數據庫的可移植性安全性健壯性,確保有效和不受干擾地處理SQL語句。
  • PL SQL 只是指指示編譯器通過SQL做什麼以及如何通過它的過程方式來做。
  • PL SQL 通過使用循環條件麵向對象的概念為程序員提供更多控制。

什麼是 PL SQL 中的過程和函數?

  • PL SQL 有兩個子程序,稱為過程函數
  • 通常,一個過程用於執行一個動作,一個函數用於計算一個值
  • PL SQL 中的子程序有聲明部分可執行部分可選的異常處理部分
  • 這些子程序可以創建並作為數據庫對象保存在數據庫中。
  • PL SQL中的過程和函數子程序返回一個單一的值,主要用於計算返回一個值
  • 這些子程序只是可以執行特定任務PL/SQL 和 SQL 語句的集合。

如何在 PL SQL 中創建存儲過程和函數?

當編寫 PL SQL 存儲過程或函數的代碼塊時,它們由 Oracle 引擎編譯。 編譯後,它被存儲為數據庫對象。 存儲過程或代碼功能塊由三部分組成:

  • 聲明部分:在此部分中,聲明過程或函數要使用的變量、常量、游標或異常。
  • 可執行部分:在這部分中,編寫了所創建的過程或函數的定義。 這部分還包括 PL/SQL 或 SQL 語句賦值、操作數據和控制執行。
  • 異常處理部分:最後一部分是可選的,其中寫入了預期的異常,這些異常可能會在執行可執行部分中編寫的代碼時出現。

PL SQL 中存儲過程和函數的優點

在我們揭開 PL SQL 過程示例之前,您必須首先了解過程和函數子程序的優點。

  • 增強數據庫性能:Oracle 引擎有助於自動編譯。 此外,無論何時完成 PL SQL 調用過程或函數,Oracle 引擎都會將編譯後的代碼加載到系統全局區 SGA 中,這有助於加快執行速度。
  • Reusability and no Redundancy : 代碼行數不能重複編寫,因為過程或函數的同一代碼塊可以在多個數據上調用任意次數。
  • 安全性:數據庫的安全性也通過使用存儲過程或函數來維護,因為它有助於通過向用戶授予權限來控制使用和訪問。 雖然,沒有授予用戶編輯或操作數據庫的權限。
  • 完整性:使用 PL SQL 存儲過程或函數的另一個優點是它確保完整性,因為它們被 Oracle 引擎存儲為數據庫對象。
  • 保存內存:存儲過程或函數的眾多好處之一是它們共享內存,這有助於將內存保存為過程或函數的單個副本,可以由多個有權執行相同操作的用戶加載。

另請閱讀:如何修復 javascript:void(0) 錯誤

創建存儲過程的語法

您可以查看以下用於在 Oracle 中創建存儲過程的語法:

 創建或替換過程 <procedure_name>
(<變量名>IN/OUT/IN OUT <數據類型>,
<變量名>IN/OUT/IN OUT <數據類型>,...) IS/AS
變量/常量聲明;
開始
-- PL/SQL 子程序體;
例外
-- 異常處理塊;
END <程序名稱>; 

oracle創建存儲過程的語法

在上面的代碼中:

  • Procedure_name表示過程的名稱。
  • Variable_name表示存儲過程中使用的變量的名稱。
  • CreateReplace procedure代表一個關鍵字,用於指定要創建的過程的名稱。
  • BeginExceptionEnd表示用於指示創建過程的不同部分的關鍵字。
  • IN/OUT/IN OUT表示參數模式,其中INREAD ONLY模式,用於變量,通過它接受用戶的值。 這是默認參數模式。
  • OUTWRITE ONLY模式,用於將值返回給用戶的變量。
  • IN OUT指的是READWRITE模式,用於接受值或將值返回給用戶的變量。
  • <procedure_name>表示過程定義的結束。 您也可以簡單地使用 END 代替它。

PL SQL 過程示例

對於下面的過程代碼,這裡有一個簡單的示例,可以清楚地演示使用存儲過程將兩個數字相加:

 設置服務器輸出;
CREATE OR REPACE PROCEDURE Sum(其中a IN number,b IN number)是c number;
開始
c := a+b;
dbms_output.put_line('兩個數之和='|| c);
結束總和;

在調用過程的情況下,將執行以下代碼:

 設置服務器輸出;
宣布
x 號;
y 號;
開始
x := &x;
y := &y;
總和(x,y);
結尾;
在哪裡:
輸入 x 的值:10
輸入 y 的值:20
兩數之和:30

PL SQL 過程已成功創建。

在 PL SQL 中創建函數的語法

現在您已經知道如何為存儲過程及其示例創建語法,是時候闡明在 PL/SQL 中創建函數了:

 創建或替換函數 <function_name>
(<變量名> IN <數據類型>,
<變量名> IN <數據類型>,...)
RETURN <數據類型> IS/AS
變量/常量聲明;
開始
-- PL/SQL 子程序體;
例外
-- 異常處理塊;
END <函數名>; 

創建函數的語法

在上面的代碼中:

  • Function_name表示函數的名稱。
  • Variable_name表示函數中使用的變量的變量名。
  • CreateReplace function表示用於要創建的函數名稱的關鍵字。
  • IN表示READ ONLY模式,用於變量,它將接受來自用戶的值。 這是默認參數。
  • Return代表一個關鍵字,其後跟一個數據類型,指定函數將要返回的值的數據類型。

另請閱讀:修復命令失敗,錯誤代碼為 1 Python Egg 信息

PL SQL 函數示例

下面給出的是 PL SQL 函數的示例,它演示瞭如何使用該函數將兩個數字相加:

 設置服務器輸出;
創建或替換函數 Sum(a IN number, b IN number) RETURN Number IS
c號;
開始
c := a+b;
返回 c;
結尾; 

函數添加兩個數字語法

在調用函數 sum 的情況下,將執行以下代碼:

 設置服務器輸出;
宣布
1號;
2號;
結果編號;
開始
no1 := &no1;
no2 := &no2;
結果 := Sum(no1,no2);
dbms_output.put_line('兩個數之和='||result);
結尾;
在哪裡:
輸入 no1 的值:5
輸入 no2 的值:5
兩數之和:10

PL SQL 過程已成功創建。

調用函數 sum 的語法

閱讀下一節以了解 PL SQL 退出過程。

什麼是 PL SQL 退出過程?

一旦滿足 WHEN 子句中的條件,當語句退出循環的當前迭代時,退出會有所幫助,並將控制權轉移到當前正在進行的循環的末尾。 Exit 語句不能在循環外使用,用於無條件地使用 Exit 和 Continue 語句或有條件地使用 Exit When 和 Continue When 語句退出循環。

存儲過程和函數過程的區別

現在您已經了解了 PL SQL 中的過程和函數,現在終於可以了解兩者之間的基本區別了:

  • 存儲過程可能會也可能不會向程序的調用部分返回一個值,而函數會向程序的調用部分返回一個值。
  • 存儲過程使用 OUT 參數返回值,而函數使用 RETURN 返回值。
  • 存儲過程使用 IN、OUT、IN OUT 參數,而函數僅使用 IN 參數。
  • 如果存儲過程在對其進行調用後要返回,則它不會指定數據類型,而函數指定在對其進行調用後將返回的值的數據類型。
  • 不能從代碼的功能塊調用存儲過程,而可以從過程代碼塊調用函數

推薦的:

  • DDR4 與 DDR5 RAM:哪個更適合遊戲?
  • 麵包板有哪些類型?
  • 如何解析文本
  • 在 SQL 中通過定界符拆分字符串的 4 種方法

我們希望我們關於PL SQL 中的過程和函數的文檔能夠幫助並成功地回答您對 PL SQL 及其子程序、過程和函數、PL SQL 退出過程等的所有疑問。 如果我們以任何方式幫助您或您有更多疑問,請在下方留下您的評論讓我們知道。