2012-01-24 41 views
2

在Oracle中,我可以使用以下命令:如何在結果集中調用java中的SQL Server存儲過程,並輸入輸出參數?

String query = "{ ? = call get_config_func(?, ?) }"; 
    try 
    { 
     CallableStatement cs = con.prepareCall(query); 
     cs.registerOutParameter(1, OracleTypes.CURSOR); 
     cs.setInt(2, i); 
     cs.registerOutParameter(3, java.sql.types.INTEGER); 
     cs.execute(); 
     ResultSet results = ((OracleCallableStatement)cs).getCursor (1); 
     String val = cs.getString(3); 

     if(results != null) 
     { 
      while(results.next()) 
      { 
      ..... 

但是我堅持與參考到Oracle不會使用SQL Server。

我試過如下:

String query = "{ call uspGetLastLocation(?, ? }"; 
    try 
    { 
     cs = con.prepareCall(query); 
     cs.setLong(1, id); 
     cs.registerOutParameter(2, java.sql.Types.VARCHAR); 
     rs = cs.executeQuery(); 

     while(rs.next()) 
     { 
      ..... 

但我得到以下錯誤

附近有語法錯誤 '{'。

我一直在使用PreparedStatement代替CallableStatement看到的例子,並更改查詢

String query = "EXEC uspGetLastLocation ?, ?"; 

但我無法弄清楚如何處理輸出參數。

任何建議或指向參考?

謝謝。

回答

3

看起來像你錯過代碼中的一個括號。 試試這個

String query = "{ call uspGetLastLocation(?, ?)}"; 
+0

我注意到,但現在我得到的錯誤「聲明沒有返回結果集」。 – Burferd

+0

關於定義輸出參數以及我如何嘗試獲取結果集的語法的其餘部分? – Burferd

+0

對於Oracle和SQL Server,JDBC API都保持不變。我首先測試你的過程並檢查它是否返回任何結果。我相信你的代碼執行得很好,並且不會爲你傳遞的參數返回任何結果。 – user47900

相關問題