我能够编写REXX代码来生成FREE PACKAGE语句。生成后,我在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..(((',?(#
所以你应该替换"REBIND PACKAGE…"使用您的BIND/REBIND/FREE命令。
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服务,传入bind参数,并通过rest API执行bind/REBIND/FREE。然后,您可以使用Java、Python、Node等远程运行命令。