有没有办法使用 REXX 执行免费的 Package 语句?

Is there a way to execute free Package statements using REXX?

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

既然您已经 SQL 使用 REXX,您可以使用 SYSPROC.ADMIN_COMMAND_DSN 来执行 BIND/REBIND/FREE 操作。您可以从 REXX 调用它。

这是我通过 Db2 命令行处理器使用的 CALL 示例,用于重新绑定集合中的所有包: 呼叫 SYSPROC.ADMIN_COMMAND_DSN ('REBIND PACKAGE (DSNESPCS..())',?) #

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

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

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