powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / statement did not return a result set
9 сообщений из 9, страница 1 из 1
statement did not return a result set
    #34395631
megakran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На SqlServer выполняю хранимую процедурку, процедура возвращает значение
(проверенно что работает)

PreparedStatement pstmt=...
.....
ResultSet r =pstmt.executeQuery(); — на этом операторе выдает ошибку: The statement did not return a result set.

Как получить результат (число)?
...
Рейтинг: 0 / 0
statement did not return a result set
    #34395751
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте CallableStatement::registerOutParameter для регистрации возвращаемого параметра
и соотв. для получения значения параметра:
CallableStatement::getInt
или
CallableStatement::getLong
или
CallableStatement::getFloat
или
CallableStatement::getDouble
и т.д
...
Рейтинг: 0 / 0
statement did not return a result set
    #34396568
megakran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CallableStatement cstmt = conn.prepareCall("{? = call procedure(?,?,?,?,?,?,?,?,?,?,?)}");
        cstmt.setString( 1 ,...);
...
        cstmt.setDate( 11 ,...);
        cstmt.registerOutParameter( 1 , java.sql.Types.INTEGER);
        cstmt.executeQuery();
        insertid=cstmt.getInt( 1 );
 

На cstmt.executeQuery(); вылетает:
com.microsoft.sqlserver.jdbc.SQLServerException: The value is not set for the parameter number 12.
...
Рейтинг: 0 / 0
statement did not return a result set
    #34396640
muchacho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопросиков то у вас 12
автор"{? = call procedure(?,?,?,?,?,?,?,?,?,?,?)}"
а вставляете только 11
авторcstmt.setString(1,...);
...
cstmt.setDate(11,...);
...
Рейтинг: 0 / 0
statement did not return a result set
    #34396737
megakran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а первый для выходного параметра "? =" писать не надо?

если без него то так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        CallableStatement cstmt = conn.prepareCall("{call dbo.p_acts_i(?,?,?,?,?,?,?,?,?,?,?)}");
        cstmt.setString( 1 ,...);
...
        cstmt.setDate( 11 ,...);
        cstmt.registerOutParameter( 1 , java.sql.Types.INTEGER);
   
        ResultSet r =cstmt.executeQuery();
 if  (r.next())
        {
			insertid = r .getShort( 1 );
        }

На ResultSet r =cstmt.executeQuery(); вылетает

com.microsoft.sqlserver.jdbc.SQLServerException: Formal parameter '@number' was defined as OUTPUT but the actual parameter not declared OUTPUT.

'@number' - это первый входной параметр хранимой процедуры
...
Рейтинг: 0 / 0
statement did not return a result set
    #34396828
muchacho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу оговорюсь, что никогда не вызывал процедуры, обычно дело ограничивалось просто запросами.

Что я понял, читая про этот CallableStatement:
1) либо надо исправить вот так
автор
CallableStatement cstmt = conn.prepareCall("{? = call procedure(?,?,?,?,?,?,?,?,?,?,?)}");
cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.setString( 2 ,...);
...
cstmt.setDate( 12 ,...);
// cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.executeQuery();
insertid=cstmt.getInt(1);


2) либо так
автор
CallableStatement cstmt = conn.prepareCall("{call dbo.p_acts_i(?,?,?,?,?,?,?,?,?,?,?)}");
cstmt.setString(1,...);
...
cstmt.setDate(11,...);
//cstmt.registerOutParameter(1, java.sql.Types.INTEGER);

ResultSet r =cstmt.executeQuery();
...
Рейтинг: 0 / 0
statement did not return a result set
    #34396835
muchacho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу оговорюсь, что никогда не вызывал процедуры, обычно дело ограничивалось просто запросами.

Что я понял, читая про этот CallableStatement:
1) либо надо исправить вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CallableStatement cstmt = conn.prepareCall("{? = call procedure(?,?,?,?,?,?,?,?,?,?,?)}");
cstmt.registerOutParameter( 1 , java.sql.Types.INTEGER);
cstmt.setString( 2 ,...);
...
cstmt.setDate( 12 ,...);
// cstmt.registerOutParameter(1, java.sql.Types.INTEGER);
cstmt.executeQuery();
insertid=cstmt.getInt( 1 );

2)либо так
Код: plaintext
1.
2.
3.
4.
5.
6.
CallableStatement cstmt = conn.prepareCall("{call dbo.p_acts_i(?,?,?,?,?,?,?,?,?,?,?)}");
cstmt.setString( 1 ,...);
...
cstmt.setDate( 11 ,...);
//cstmt.registerOutParameter(1, java.sql.Types.INTEGER);

ResultSet r =cstmt.executeQuery();
...
Рейтинг: 0 / 0
statement did not return a result set
    #34396886
megakran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!! победила комбинация 1-го и 2-го :)

параметры описал как в п.1

а результат получил так

ResultSet r =cstmt.executeQuery();
if (r.next())
{
insertid = r .getShort(1);
}

Еще в процедуре вместо Return @@IDENTITY сделал Select @@IDENTITY
...
Рейтинг: 0 / 0
statement did not return a result set
    #34396894
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО проще всего привести саму процедуру.

Есть еще такое предложение - скачай исходники jTDS (тоже jdbc-драйвера к MSSQL, если это не
излишне): http://sourceforge.net/project/showfiles.php?group_id=33291 Т.е. архив jtds-1.2-src.zip.
В нем есть в том числе тесты CallableStatement'а, директория src\test\net\sourceforge\jtds\test,
файлы CallableStatementJDBC3Test.java, CallableStatementTest.java. Может что-нибудь подскажет, как
его надо составить в твоем случае.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / statement did not return a result set
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]