使用 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