使用 RUNSQL CL 命令

RUNSQL CL 命令允许从 CL 程序中运行 SQL 语句,而不需要源文件。

RUNSQL 可以使用以下语句:

  • ALTER FUNCTION
  • ALTER MASK
  • ALTER PERMISSION
  • ALTER PROCEDURE
  • ALTER SEQUENCE
  • ALTER TABLE
  • ALTER TRIGGER
  • CALL
  • COMMENT
  • COMMIT
  • 复合(动态)
  • 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
  • 授予
  • 插入
  • 标签
  • MERGE
  • REFRESH TABLE
  • RELEASE SAVEPOINT
  • RENAME
  • 撤销
  • ROLLBACK
  • SAVEPOINT
  • SET CURRENT DECFLOAT ROUNDING MODE
  • SET CURRENT DEGREE
  • SET CURRENT IMPLICIT XMLPARSE OPTION
  • 设置当前时间系统时间
  • SET ENCRYPTION PASSWORD
  • SET PATH
  • SET SCHEMA
  • SET TRANSACTION
  • TRANSFER OWNERSHIP
  • TRUNCATE
  • 更新

语句字符串的长度最多可以为 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