如何通过QShell的DB2命令运行存储过程,因为我需要一种简单的方法来对存储过程进行单元测试?
在IBM i上
使用
启动qshellQSH
以各种格式输入这些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
答案 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命令已成功完成。