REXX应用程序,用于发布SQL语句
只要可以使用REXX命令,就可以在REXX程序中编写SQL语句。
Db2 REXX Language Support 支持所有动态SQL语句和以下静态SQL语句:
- CALL
- CLOSE
- CONNECT
- DECLARE CURSOR
- 描述准备好的陈述或表格
- DESCRIBE CURSOR
- DESCRIBE INPUT
- DESCRIBE PROCEDURE
- EXECUTE
- EXECUTE IMMEDIATE
- FETCH
- OPEN
- PREPARE
- 释放连接
- SET CONNECTION
- SET CURRENT PACKAGE PATH
- 设置当前套餐
- 设置主机变量 = 当前日期
- 设置主机变量 = 当前度数
- SET 主机变量 = 当前成员
- SET 主机变量 = 当前包集
- SET 主机变量 = 当前路径
- SET 主机变量 = 当前服务器
- 设置主机变量 = 当前 SQLID
- 设置主机变量 = 当前时间
- SET 主机变量 = 当前时间戳
- 设置主机变量 = 当前时区
REXX程序中的每个SQL语句必须以EXECSQL开头,且大小写或大小写混合均可。 以下项目之一必须遵循EXECSQL:
- 用单引号或双引号括起来的SQL语句。
- 一个包含 SQL 语句的 REXX 变量。 REXX变量前面不能有冒号。
例如,您可以在REXX程序中使用以下任一方法来执行COMMIT语句:
EXECSQL "COMMIT" rexxvar="COMMIT"
EXECSQL rexxvar 必须在DSNREXX下使用EXECUTE IMMEDIATE或PREPARE和EXECUTE执行以下动态语句:
- DECLARE GLOBAL TEMPORARY TABLE
- SET CURRENT DEBUG MODE
- SET CURRENT DECFLOAT ROUNDING MODE
- SET CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION
- SET CURRENT QUERY ACCELERATION
- SET CURRENT REFRESH AGE
- SET CURRENT ROUTINE VERSION
- SET SCHEMA
您不能执行包含宿主变量的 SELECT、INSERT、UPDATE、MERGE 或 DELETE 语句。 相反,您必须在语句中执行PREPARE,用参数标记代替宿主变量,然后在EXECUTE、OPEN或FETCH语句中使用宿主变量。 更多信息请参见宿主变量。
SQL语句遵循适用于REXX命令的规则。 SQL语句可以以分号结尾,也可以用单引号或双引号括起来,如下例所示:
'EXECSQL COMMIT';- 注释
- 在SQL语句中不能包含REXX注释(/* … */)或SQL注释(--)。 但是,您可以在程序中的任何其他位置添加REXX注释。
- SQL语句的分隔符
- 在REXX程序中,通过在SQL语句前添加
EXECSQL来限定SQL语句。 如果语句是文字字符串,请用单引号或双引号将其括起来。 - SQL语句的继续
- 跨行的SQL语句遵循REXX语句延续规则。 您可以将语句分成几部分,每部分占一行,并用逗号或连字符分隔。 例如,以下任一陈述均成立:
EXECSQL , "UPDATE DSN8C10.DEPT" , "SET MGRNO = '000010'" , "WHERE DEPTNO = 'D11'""EXECSQL " || , " UPDATE DSN8C10.DEPT " || , " SET MGRNO = '000010'" || , " WHERE DEPTNO = 'D11'" - 包括代码
- EXECSQL INCLUDE语句对REXX无效。 因此,您不能在程序中包含外部定义的SQL语句。
- 页边距
- 与REXX命令一样,SQL语句可以在行中的任何位置开始和结束。
您可以使用任何有效的、不以句号结尾的REXX名称作为主机变量。 但是,主机变量名称不应以“SQL”、“RDI”、“DSN”、“RXSQL”或“QRW”开头。 变量名最多为64字节。
- Null
- REXX空值和SQL空值是不同的。 REXX语言中有一个空字符串(长度为0的字符串)和一个空子句(只包含空格和注释的子句)。 SQL空值是一个特殊值,与所有非空值不同,表示没有值。 将 REXX 空值分配给 Db2 列不会使列值变为空值。
- 声明标签
- 您可以像标记REXX命令一样,在SQL语句前添加一个标签。
- 处理 SQL 错误代码
- Rexx应用程序可以从 Db2 获取有关SQL错误的更多信息。 更多信息,请参阅 《在REXX应用程序中处理SQL错误代码 》。