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

时间:2017-02-17 11:19:28

标签: stored-procedures ibm-midrange db2-400

如何通过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

4 个答案:

答案 0 :(得分:2)

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

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

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

  

创建过程add1(在inparm int中,out outparm int)语言sql begin set outparm = inparm +1;结束   调用add1(1,?)   参数1返回2

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

最后得到了基本语法

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

导致:

DB20000I SQL命令已成功完成。