全部產品
Search
文件中心

ApsaraDB for OceanBase (Deprecated):PL 編譯和調試

更新時間:Aug 08, 2024

背景資訊

PL 是一種過程化程式語言(Procedural Language,PL)。是對 SQL 的擴充,在普通 SQL 陳述式的基礎上增加了程式設計語言的特點,將資料操作和查詢語句組織在 PL 代碼的過程化代碼中,通過邏輯判斷、迴圈等操作實現複雜的功能。

使用 PL 可以編寫具有進階功能的程式,能夠將商務邏輯封裝在資料庫內部,提供更好的抽象性和安全性,同時減少了網路的互動,調用速度更快,從而提升整體效能。

PL 程式的開發工作是資料庫服務開發人員重要的日常工作,與 SQL 陳述式的支援模組類似,PL 的調試模組同樣為非常重要的功能。因此,在編程過程中,開發人員需要一個PL 開發地區和調試功能。

PL 語句可用於編寫函數、預存程序、程式包和觸發器等資料庫物件。

ODC V2.2.0 及之後版本支援 PL 對象和匿名塊的建立、編譯、運行和調試等功能。使用者可在匿名塊視窗的編輯地區中編譯 PL 語句,同時可對已建立的 PL 對象進行編輯和調試等操作。建議使用 ODC 最新版本以獲得更好的體驗。

本文檔以建立 OceanBase Oracle 類型的預存程序為例,在資料庫 GSH 中建立預存程序 PROC_VARCHAR2。

說明

文中所使用的均為樣本資料,您可根據實際情況對資料進行替換。

前提條件

ODC PL 支援現狀

功能

支援的對象

支援的資料來源

支援版本

編譯

函數/預存程序/程式包

OceanBase Oracle、OB Cloud Oracle

V2.2.7x、V3.0.0 及之後版本。

調試

函數/預存程序/匿名塊

OceanBase Oracle

V3.2.3 及之後版本。

運行

函數/預存程序

OceanBase Oracle、OB Cloud Oracle、OceanBase MySQL、OB Cloud、MySQL

V2.0.x 及之後版本。

函數/預存程序

MySQL

V5.7

運行

程式包/匿名塊

OceanBase Oracle、OB Cloud Oracle

V2.0.x 及之後版本。

同時需要注意:

  • 若資料來源為 OceanBase,有且僅能通過 OBProxy 串連,該執行個體將不支援調試。

  • 匿名塊視窗僅在 OceanBase Oracle/OB Cloud Oracle 資料來源提供。

  • ODC V3.2.3 之前版本不支援在 arm 架構下進行調試。

PL 編譯

  1. 在 SQL 視窗中建立預存程序。

    image.png

    CREATE OR REPLACE PROCEDURE PROC_VARCHAR2(p1 in VARCHAR2, p2 out VARCHAR2, p3 in out VARCHAR2)
    as 
    v1 varchar2(64) := 'hello,oceanbase';
    begin
    dbms_output.put_line(p1);
    dbms_output.put_line(p3);
     p2 := 'hello,odc';
    end;
    
  2. 在 SQL 開發視窗的左側導覽列 > 預存程序列表中,選擇 編譯 預存程序 PROC_VARCHAR2。

    image.png

  3. 編譯 PL 語句並查看編譯結果。

    image.png

PL 調試

  1. 在 SQL 開發視窗的左側導覽列 > 預存程序列表中,選擇調試預存程序 PROC_VARCHAR2,進入偵錯模式。

    image.png

  2. 設定參數值後,單擊 確定

    重要

    OceanBase V4.0.0 及之後的版本,調試前需要擷取調試許可權。樣本:GRANT DEBUG CONNECT SESSION TO GSH; GRANT DEBUG ANY PROCEDURE TO GSH;

    image.png

  3. 進入調試頁面,單擊批量執行,運行 PL 語句。

    image.png

相關文檔