SQL 程序化語言 (SQL PL)

SQL 可用作結構化程式設計語言,以撰寫 SQL 函數、SQL 程序、SQL 觸發程式及複合 (動態) 陳述式的常式主體。 這稱為 SQL 程序化語言,也稱為 SQL PL。

SQL 程序及 SQL 函數統稱為 SQL 常式。 在 CREATE PROCEDURE 陳述式上指定 SQL 常式主體,即可建立 SQL 程序。 在 CREATE FUNCTION 陳述式上指定 SQL 常式主體,即可建立 SQL 函數。 透過在 CREATE TRIGGER 陳述式上指定 SQL 常式主體來建立 SQL 觸發程式。 在複合 (動態) 陳述式上指定 SQL 常式主體來定義複合 (動態) 陳述式。

也可以變更 SQL 程序。 可以使用 CREATE PROCEDURE 或 CREATE FUNCTION 陳述式上的 OR REPLACE 選項,以新版本取代 SQL 常式。 您也可以在 ALTER PROCEDURE 陳述式或 ALTER FUNCTION 陳述式上指定新的 SQL 常式主體。

SQL 常式主體必須是單一 SQL 陳述式,可能是 SQL 控制陳述式。

SQL 常式主體是由資料庫管理程式轉換成程式或服務程式之程序、函數或觸發程式的可執行部分。 當建立 SQL 常式、觸發程式或 廣域變數 時, SQL 會建立暫時原始檔 (QTEMP/QSQLSRC 和 QTEMP/QSQLT00000) ,其中包含內含 SQL 陳述式的 C 原始碼。 當 SQL 建立這些暫存來源檔時,會使用記錄長度 160 ,並將來源陳述式的 CCSID 值設為新檔案的 CCSID 值。 如果其中一個來源檔存在,則必要時將修改它們,以具有與來源檔相同的 CCSID。 這些原始檔的記錄長度應該為 160 ,否則可能會發生非預期的結果。 原始檔成員的名稱與常式、觸發程式或廣域變數的系統名稱相同。 如果指定 DBGVIEW (*SOURCE) , SQL 會在與程序、函數或觸發程式相同的檔案庫中,建立原始檔 QSQDSRC 中常式或觸發程式的根來源。

使用 CRTPGM 或 CRTSRVPGM 指令,將 SQL 程序建立為程式 (*PGM) 或服務程式 (*SRVPGM) 物件。 SQL 函數建立為服務程式物件。 SQL 觸發程式建立為程式物件。 程式或服務程式建立在檔案庫中,該檔案庫是程序、函數或觸發程式名稱的隱含或明確限定元。

建立程式或服務程式時, SQL 陳述式 (包括大部分控制陳述式) 會變成程式或服務程式中的內嵌式 SQL 陳述式。 CALL、SIGNAL、RESIGNAL 及 GET DIAGNOSTIC 控制陳述式也會變成程式或服務程式中的內嵌式 SQL 陳述式。

指定的程序或函數會登錄在 SYSROUTINES 及 SYSPARMS 型錄表格中,並建立從 SYSROUTINES 到程式的內部鏈結。 使用 SQL CALL 陳述式呼叫程序時,或在 SQL 陳述式中呼叫函數時,會呼叫與常式相關聯的程式。 指定的 SQL 觸發程式登錄在 SYSTRIGGERS 型錄表格中。