Параметр № 2 не является параметром OUT

String sqlString = "{CALL MyStoredProcedure(?,?)}";

CallableStatement sqlStm = connection.prepareCall(sqlString);

sqlStm.setString(1, username);
sqlStm.registerOutParameter(2, Types.DECIMAL, 0); // <---- ERROR
sqlStm.execute();

Это моя ошибка трассировки стека:

java.sql.SQLException: Parameter number 2 is not an OUT parameter
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
    at com.mysql.jdbc.CallableStatement.checkIsOutputParam(CallableStatement.java:690)
    at com.mysql.jdbc.CallableStatement.registerOutParameter(CallableStatement.java:1881)
    at com.mysql.jdbc.CallableStatement.registerOutParameter(CallableStatement.java:1890)
    at com.isb.igt.database.StoredProcedures.preparationCalls(StoredProcedures.java:40)
    at com.isb.igt.database.StoredProcedures.main(StoredProcedures.java:236)

Процедура первой строки:

CREATE DEFINER=devel@11.22.33.44 ПРОЦЕДУРА MyStoredProcedure(вход в систему VARCHAR(255), переменная OUT DECIMAL(20,2)

Я не могу понять, как заставить это работать.

Спасибо

1 ответ

Решение

Вызов функции должен выглядеть так {? = call MyStoredProcedure(?)}

Другие вопросы по тегам