2017-02-17 134 views
1

如何通過QShell的DB2命令運行存儲過程,因爲我需要一種簡單的方法來對存儲過程進行單元測試更改?在IBM i上,如何通過QShell的DB2命令運行存儲過程?

在IBM i

QSH

QSHELL開始進入各種格式的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

回答

1

我使用Squirrel SQL Client http://squirrel-sql.sourceforge.net/來測試我所有的SQL。

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

注意分隔符是一個逗號,,並且?是不是當交互叫這樣一個有效參數標記。

除了客戶端,您還需要一個JDBC驅動程序。您可以使用JTOpen驅動程序IBM我發現這裏:http://jt400.sourceforge.net/

0

終於得到了基本的語法

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

這就造成:

DB20000I SQL命令成功完成。

2

您也可以使用jt400.jar附帶的JDBC客戶端。您可以使用以下命令從QSH運行它。

的java -cp /qibm/proddata/os400/jt400/lib/jt400.jar com.ibm.as400.access.jdbcClient.Main JDBC:DB2:本地主機

客戶端也將處理存儲過程輸出參數如以下示例所示。

創建過程add1(inparm int,out outparm int)language sql begin set outparm = inparm +1;結束 呼叫ADD1(1 ,?) 參數1 ??? 2

+1

更好的可能是** - cp /qibm/proddata/os400/jt400/lib/jt400Native.jar**或者至少在classpath中的jt400.jar上面有jt400Native.jar。 – user2338816

1

從CL命令行中,或CL程序裏面,可以使用RUNSQL命令來執行的SQL語句。

如果您要嘗試多個臨時SQL語句,您可以使用STRSQL命令。就我個人而言,我傾向於使用作爲iNavigator的一部分提供的SQL窗口。