SQL 批处理实用程序

使用 SQL Batch 实用程序通过使用 JCL 来调用批处理程序来运行多个 SQL 语句。

SQL Batch 实用程序包含在 IMS Universal JDBC driver 中,并使用 type-4 连接来提交 SQL 语句。 必须使用 IBM® Java™ for z/OS® (JZOS) Batch Launcher 来运行 SQL Batch 实用程序。

图 1. SQL 批处理实用程序输入和输出数据集
开始图描述: SQL 语句是 SQL Batch 实用程序的输入。 该实用程序的输出包括对 IMS 目录的更新,数据库和输出消息。 结束图描述。

限制

目前,没有针对 SQL Batch 实用程序记录任何限制。

先决条件

要运行 SQL Batch 实用程序,必须满足以下先决条件:
  • 已安装 IBM Java for z/OS (JZOS) 批处理启动程序。
  • 已安装 IMS 开放式数据访问解决方案。
  • 已安装并配置 IMS 目录。

需求

您可以启用 SQL Batch 实用程序来生成 RACF® PassTickets ,以认证 JDBC 应用程序的用户来访问 IMS DB。 PassTickets 是 RACF 密码和密码短语的替代方法,并提供更好的安全性,因为 PassTickets 无需以明文形式在网络中发送密码和密码短语。 如果需要 SQL 批处理实用程序来生成 RACF PassTickets, 请确保满足以下所有条件:
  • IRRRacf.jaribmjzos.jar 文件都位于作业的类路径中。
  • DriverManager.getConnection 方法的 applName URL中,指定了1到8个字符的应用程序名称,该名称在PTKTDATA类中定义RACF ,用于DRDA客户端访问 IMS。
  • 以下值彼此相同:
    • DriverManager.getConnection 方法的 applName URL 属性的值。
    • ODACCESS 语句的 APPL= 参数的值,该参数位于 IMS PROCLIB 数据集的 HWSCFGxx 成员中。
  • 在 SQL Batch 实用程序的 JCL 的 JOB 语句上,指定与作业关联的 z/OS 用户标识。

建议

目前,没有为 SQL Batch 实用程序记录任何建议。

输入和输出

SQL Batch 实用程序的输入是可以通过以下任何方式提供的 SQL 语句:
  • 与 JCL 内联
  • 在 JCL 引用的数据集中
  • 在 UNIX 系统服务上 JCL 引用的文件中
该实用程序将消息返回到 JCL 中定义的消息输出数据集。

返回码

在程序终止时提供了以下返回码。
代码
含义
0
未检测到任何错误。
11
与 IMS Connect 的连接失败。 验证连接参数是否正确。
12 个月
无法运行 SQL 语句,所有工作都已回滚到先前的落实点。 验证 SQL 语句是否有效。
13
落实未成功完成。
14 日
回滚未成功完成。
15 日
未正确清除连接。
16
指定了无效的 SQL 语句。 请验证输入文件是否仅包含有效的 SQL 语句。
1
找不到 Java 主类,或者 main 方法抛出了异常。
101
发生配置或设置错误。 有关更多信息,请参阅 SYSOUT 消息。
102
发生系统或内部错误。 有关更多信息,请参阅 SYSOUT 消息。

有关返回码 11-16 的更多信息,请参阅 STDOUT 和 STDERR 中的输出消息。

JZOS 批处理启动程序发出返回码 0 , 100 , 101 和 102。

JCL 规范

SQL Batch 实用程序通过标准 z/OS 作业运行,该作业使用 JZOS Batch Launcher 来启动该实用程序。 需要以下 JCL 语句:
  • 为满足安装规范而定义的 JOB 语句。
  • SET P1 语句
  • EXEC 语句
  • 定义输入和输出的 DD 语句
SET P1 语句

SET P1 语句必须采用以下格式:

// SET P1='com.ibm.ims.jdbc.batch.BatchUtil'

在 SET P1 语句中, com.ibm.ims.jdbc.batch.BatchUtil 是主 SQL Batch 实用程序类。 此实用程序类位于 IMS JDBC 驱动程序 (imsudb.jar) 中。

EXEC 语句

EXEC 语句必须采用以下格式:
//JAVAJVM EXEC PGM=JVMLDMxx,REGION=0M,                         
//   PARM='/ &P1'                       

必须将变量 JVMLDMxx 替换为 JZOS Batch Launcher 的 IBM SDK for z/OS 版本。 例如,对于 IBM 64 位 SDK V 7 ,请指定 JVMLDM76

DD 语句

STEPLIB DD
指向 JZOS.LOADLIB,它是 JVMLDM 模块的 STEPLIB。

需要 STEPLIB DD 语句。

SYSPRINT DD
定义系统作业日志的消息数据集。 数据集可以在打印机,磁带或直接访问设备上,也可以通过输出流进行路由。

此 DD 语句是必需的。

SYSOUT DD
定义系统作业记录的错误信息的消息输出数据集。 数据集可以在打印机,磁带或直接访问设备上,也可以通过输出流进行路由。

此 DD 语句是必需的。

STDOUT DD
定义 Java 作业的消息输出数据集。 数据集包含来自 Java System.out的输出。 数据集可以在打印机,磁带或直接访问设备上,也可以通过输出流进行路由。 (可选) 可以在此 DD 语句中指定 UNIX 系统服务上的文件。

此 DD 语句是必需的。

STDERR DD
定义 Java 作业的错误信息的消息输出数据集。 数据集包含来自 Java System.err的输出。 数据集可以在打印机,磁带或直接访问设备上,也可以通过输出流进行路由。

此 DD 语句是必需的。

CEEDUMP DD
定义 Language Environment® 运行时选项。
MAINARGS DD
定义主 Java 类的输入自变量。
IMSSQL DD
定义要运行的 SQL 语句。 可以在数据集中或 UNIX 系统服务上的文件中内联指定 SQL 语句。

示例 1: 指定内联语句

//IMSSQL DD *
CONNECT jdbc:ims://myConnectServer:myPort/DFSCP001;
CREATE DATABASE myDB...;
CREATE TABLE myTable ...;
COMMIT;
DISCONNECT;

示例 2: 指定用户名和密码

以下示例与先前示例相同,只是在 CONNECT 语句中包含了用于安全性检查的用户名和密码。 在此示例中,密码后面需要两个分号。

CONNECT 语句的语法符合 IMS Universal JDBC driver 为 type-4 连接定义的语法。 有关更多信息,请参阅 使用 JDBC DriverManager 接口连接到 IMS 数据库

//IMSSQL DD *
CONNECT jdbc:ims://myConnectServer:myPort/DFSCP001:user=myUserName;password=myPassword;;
CREATE DATABASE myDB...;
CREATE TABLE myTable ...;
COMMIT;
DISCONNECT;

示例 3: 指定数据集中的语句

//IMSSQL DD DISP=SHR,
//       DSN=myPDS(myScript)

示例 4。 在 UNIX 系统服务上的文件中指定语句

//IMSSQL DD PATH='/stdin-file-pathname',PATHOPTS=(ORDONLY)                

此 DD 语句是必需的。

STDENV DD
定义 Java 环境变量。 在此部分中,确保以下语句指向 JDK 路径:
export JAVA_HOME=myJavaHomePath
另外,请确保以下语句指向 IMS Universal JDBC driver的路径,该驱动程序包含 SQL Batch 实用程序:
CLASSPATH="$CLASSPATH":myLibPath/imsudb.jar

此 DD 语句是必需的。