У меня есть хранимая процедура «тест», который выглядит как:хранимые процедуры с возвратом значение
CREATE PROCEDURE test
@name varchar(32)
AS
DECLARE
@login_status TINYINT,
@syb_login varchar(20),
@syb_pass varchar(20)
...
..
BEGIN
SELECT @status = 0
SELECT @login as login,
@pass as pass,
@status as status
RETURN 0
END
Мне нужно передать один входной параметр «Myname» в качестве входного параметра для этой процедуры, и которые, в свою очередь, возвращает вход, пропуск и статус в качестве выходных (только из одной записи) параметров.
В JDBC, я пытался сделать, как показано ниже:
String query = "{call test(?,?,?)}";
System.out.println(query);
CallableStatement proc = null;
ResultSet rs;
try {
proc = connection.prepareCall(query);
proc.setString(1, "myName");
proc.registerOutParameter(2, java.sql.Types.VARCHAR);
proc.registerOutParameter(3, java.sql.Types.VARCHAR);
proc.execute();
System.out.println(proc.getString(2));
Это всегда дает исключение:
java.sql.SQLException: JZ0SG: A CallableStatement did not return as many output parameters as the application had registered for it.
at com.sybase.jdbc4.jdbc.SybConnection.getAllExceptions(Unknown Source)
at com.sybase.jdbc4.jdbc.SybStatement.handleSQLE(Unknown Source)
at com.sybase.jdbc4.jdbc.ParamManager.nextResult(Unknown Source)
at com.sybase.jdbc4.jdbc.ParamManager.doGetOutValueAt(Unknown Source)
at com.sybase.jdbc4.jdbc.ParamManager.getOutValueAt(Unknown Source)
at com.sybase.jdbc4.jdbc.SybCallableStatement.getString(Unknown Source)
Я попытался с JDBC execute SQL Server stored procedure with return value and input/output parameters, https://msdn.microsoft.com/en-us/library/ms378108.aspx, но это не сработало.
Показать полный создать заявление для вашей процедуры. – Jens
Переменные in/out объявлены в 'CREATE PROCEDURE test AS ...'. Покажите нам ''. –
@ OlivierGrégoire Я добавил заявление о создании – Harbinger