【问题标题】:Is there a way to execute free Package statements using REXX?有没有办法使用 REXX 执行免费的 Package 语句?
【发布时间】:2021-03-28 16:28:54
【问题描述】:

我能够编写一个生成 FREE PACKAGE 语句的 REXX 代码。生成后,我在 JCL 中使用该文件来执行 FREE PACKAGE 语句。有没有办法通过 rexx 直接执行 FREE PACKAGE 语句?我尝试在 REXX 中像普通查询一样执行它,但它会引发 -104 错误。我相信我不应该尝试像查询一样执行它。任何帮助将不胜感激。

【问题讨论】:

  • 当然。您所要做的就是分配所需的所有数据集并调用将处理这些语句的程序。但是,如果 DB2 系统与您不在同一个 LPAR 上,或者您的在线会话没有权限,那么它就会失败。由于您没有指定用于尝试执行这些语句的代码,并且您没有提供有用的调试信息,例如错误消息编号或文本,因此无法提供进一步的帮助。它没有“抛出”-104 错误,而是“发出”了-104 代码。东西不会“扔”到 USS 之外的大型机上。
  • 最简单的方法是从 Rexx 程序提交批处理作业。 “提交 mypds(myjob)”

标签: sql mainframe jcl rexx db2-zos


【解决方案1】:

由于您似乎有使用 REXX 的 SQL,您可以使用 SYSPROC.ADMIN_COMMAND_DSN 来执行 BIND/REBIND/FREE 操作。你可以从 REXX 调用它。

下面是一个示例 CALL,我通过 Db2 命令行处理器重新绑定集合中的所有包: CALL SYSPROC.ADMIN_COMMAND_DSN ('REBIND PACKAGE (DSNESPCS..())',?) #

所以你可以用你的 BIND/REBIND/FREE 命令替换 'REBIND PACKAGE...'。

Db2 for z/OS 提供了一些管理过程,使您能够运行命令和许多其他管理操作: https://www.ibm.com/support/knowledgecenter/en/SSEPEK_12.0.0/sqlref/src/tpc/db2z_suppliedstoredprocedures.html

上面提到不在同一个 LPAR 上运行可能是一个挑战。如果您需要远程运行命令,另一种方法是为 Db2 存储过程创建 Db2 for z/OS Native Rest Services。所以另一个可行的选择是在 SYSPROC.ADMIN_COMMAND_DSN 上创建一个 REST 服务,传入绑定参数,然后通过 REST API 执行 BIND/REBIND/FREE。然后您可以使用 Java、Python、Node 等远程运行命令。

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2021-01-31
    • 2022-01-24
    • 2021-08-22
    • 2014-07-03
    相关资源
    最近更新 更多