使用 RUNSQL CL 指令

RUNSQL CL 指令容許從 CL 程式內執行 SQL 陳述式,而不需要原始檔。

RUNSQL 可以使用下列陳述式:

  • ALTER FUNCTION
  • ALTER MASK
  • ALTER PERMISSION
  • ALTER PROCEDURE
  • ALTER SEQUENCE
  • ALTER TABLE
  • ALTER TRIGGER
  • CALL
  • 註解
  • COMMIT
  • COMPOUND(動態)
  • CREATE ALIAS
  • CREATE FUNCTION
  • CREATE INDEX
  • CREATE MASK
  • CREATE PERMISSION
  • CREATE PROCEDURE
  • CREATE SCHEMA
  • CREATE SEQUENCE
  • CREATE TABLE
  • CREATE TRIGGER
  • CREATE TYPE
  • CREATE VARIABLE
  • CREATE VIEW
  • DECLARE GLOBAL TEMPORARY TABLE
  • 刪除
  • DROP
  • GRANT
  • 插入
  • 標籤
  • MERGE
  • REFRESH TABLE
  • RELEASE SAVEPOINT
  • RENAME
  • REVOKE
  • 回轉
  • SAVEPOINT
  • SET CURRENT DECFLOAT ROUNDING MODE
  • SET CURRENT DEGREE
  • SET CURRENT IMPLICIT XMLPARSE OPTION
  • SET CURRENT TEMPORAL SYSTEM_TIME
  • SET ENCRYPTION PASSWORD
  • SET PATH
  • SET SCHEMA
  • SET TRANSACTION
  • TRANSFER OWNERSHIP
  • TRUNCATE
  • UPDATE

陳述式字串長度最多為 5000 個字元。 它不得以分號結尾。

陳述式字串中容許註解。 行註解以雙連字號 (--) 開頭,並在行尾 (歸位及/或換行) 或字串尾端結束。 區塊註解以/* 開頭並繼續執行,直到達到對應的 */ 為止。 區塊註解可以是巢狀。

如果 RUNSQL 開啟了任何檔案,則會在將控制權傳回給呼叫者之前關閉該檔案。 如果確定控制在作用中,則由使用者的應用程式來執行確定或回復。

指令會在呼叫程式的啟動群組中執行。 如果 RUNSQL 併入已編譯的 CL 程式中,則會使用程式的啟動群組。

依預設不會產生任何輸出清單。 如果發生失敗,則會將 SQL 訊息當作跳離訊息傳送給呼叫程式。 對於傳回語法錯誤的複式 SQL 陳述式,您可以使用資料庫監視器來協助尋找錯誤的原因。 啟動資料庫監視器,執行 RUNSQL 指令,並使用 System i Navigator來分析資料庫監視器。 您可以在指令上使用 OPTION、PRTFILE 及 SECLVLTXT 參數來產生清單。

從 CL 執行 INSERT 陳述式:
RUNSQL SQL('INSERT INTO prodLib/work_table VALUES(1, CURRENT TIMESTAMP)')
在 CL 程式中,您可以使用「接收檔案 (RCVF)」指令來讀取針對此查詢產生之表格的結果:
RUNSQL SQL('CREATE TABLE qtemp.worktable AS
  (SELECT * FROM qsys2.systables WHERE table_schema = ''MYSCHEMA'') WITH DATA')
       COMMIT(*NONE) NAMING(*SQL)
建立 CL 程式,以使用輸入參數作為陳述式的一部分來建構及執行 SQL 陳述式:
RUNSQL1: PGM PARM(&LIB)
    DCL &LIB TYPE(*CHAR) LEN(10)
    DCL &SQLSTMT TYPE(*CHAR) LEN(1000)
    CHGVAR VAR(&SQLSTMT) +
           VALUE('DELETE FROM qtemp.worktable1 +
                  WHERE table_schema = '' || &LIB || '' ')
    RUNSQL SQL(&SQLSTMT) COMMIT(*NONE) NAMING(*SQL)
  ENDPGM