在IBM i 上,如何通过QShell 的DB2 命令运行 存储过程?

On IBM i, how to run a stored procedure via DB2 command of QShell?

由于我需要一种简单的方法来对存储过程的更改进行单元测试,因此您如何 运行 通过 QShell 的 DB2 命令创建存储过程?

在 IBM i 上

启动了 qshell

QSH

以各种格式输入这些 db2 命令但没有成功

db2 call libraryname.stroredprocedurename('param1value' 'param2value' ?)

db2 call libraryname.stroredprocedurename ('param1value' 'param2value' ?)

db2 call libraryname.stroredprocedurename (param1value  param2value ?)

Only reference source I could find

已尝试使用 CLP 调用存储过程但是没有 CLP 示例 here

我使用 Squirrel SQL 客户端 http://squirrel-sql.sourceforge.net/ 来测试我所有的 SQL。

call libraryname.stroredprocedurename('param1value', 'param2value')

请注意分隔符是逗号 ,,并且 ? 在像这样以交互方式调用时不是有效的参数标记。

除了客户端,您还需要一个 JDBC 驱动程序。您可以在此处使用适用于 IBM i 的 JTOpen 驱动程序:http://jt400.sourceforge.net/

终于掌握了基本语法

db2 "CALL lib.proc ('parmvalue1')" 

结果是:

DB20000I SQL 命令已成功完成。

您还可以使用 jt400.jar 附带的 JDBC 客户端。您可以使用以下命令从 QSH 运行 它。

java -cp /qibm/proddata/os400/jt400/lib/jt400.jar com.ibm.as400.access.jdbcClient.Main jdbc:db2:localhost

客户端还将处理存储过程输出参数,如下例所示。

create procedure add1(in inparm int, out outparm int) language sql begin set outparm = inparm +1; end call add1(1,?) Parameter 1 returned 2

从 CL 命令行,或在 CL 程序中,您可以使用 RUNSQL 命令来执行 SQL 语句。

如果您要尝试多个临时 SQL 语句,您可以使用 STRSQL 命令。就个人而言,我倾向于使用作为 iNavigator 的一部分提供的 SQL window。