Microsoft(sqljdbc4.jar)が提供するJDBCドライバを使用して、定義済みの同義語を使用してストアドプロシージャを呼び出すことができません。 I.作成された呼び出し可能なステートメントを実行するときにMicrosoft SQL Serverストアドプロシージャの同義語へのJDBCコール
CREATE SYNONYM dbo.synonym_name for dbo.procedure_name
:として定義同義語のため
パラメータが正しく設定されているにもかかわらずException in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: Parameter param_name was not defined for stored procedure [dbo].[synonym_name].
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.findColumn(SQLServerCallableStatement.java:1217)
at com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.setString(SQLServerCallableStatement.java:1563)
at testmssql.main(testmssql.java:53)
(私は場合:
CallableStatement callStmt = conn.prepareCall("{ call [dbo].[synonym_name] (?,?,?,?,?,?) }");
私は例外を取得しますプロシージャを直接呼び出す(同義語を迂回する)すべて正常に動作する)。
さらに、MicrosoftのドライバをJTDSに置き換えると、すべて正常に動作します。
CallableStatement
は、Microsoft SQL ServerのJDBCドライバでストアドプロシージャの同義語を使用してどのように実行できますか?
私はそこに問題があることがわかりますが、何ですか?スティオン? –
@Paul Sasik - 私は質問を追加しました。おそらく読みにくいですが、私はそれをよりうまく表現できませんでした。 – diciu
+1いいですね。私はそれがあなたが探していた解決策だと思っていましたが、あなたの仕事からいくつかの道がありました。 Btw、なぜJTDSは良い解決策ではありませんか?そして、あなたはストアドプロシージャの同義語を持たなければならないのですか? –