Использование драйвера JDBC, предоставленного Microsoft (sqljdbc4.jar) Я не могу вызвать хранимую процедуру, используя определенный для нее синоним.
То есть для синонима, определенного как:
CREATE SYNONYM dbo.synonym_name for dbo.procedure_name
при выполнении оператора вызова, созданного:
CallableStatement callStmt = conn.prepareCall("{ call [dbo].[synonym_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)
Даже если параметры установлены правильно (если я вызываю процедуру напрямую (в обход синонима), все работает нормально).
Более того, если я заменю драйвер Microsoft на JTDS, все будет нормально.
Как запустить CallableStatement
, используя синоним хранимой процедуры с драйвером JDBC для Microsoft SQL Server?