powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / один PreparedStatement, вместо двух
2 сообщений из 2, страница 1 из 1
один PreparedStatement, вместо двух
    #33341481
Фотография _AndreyP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
PreparedStatement stmt = connection.prepareStatement
          (" INSERT INTO textBook ( Titletheme, Parentunitid , Textbooktypeid ) "
          +" VALUES (?,TO_NUMBER(?),TO_NUMBER(?)) ");
          stmt.setString( 1 ,sTitleTheme);     // Bind the textBook.titleThem       Input parameter
          stmt.setString( 2 ,sParentUnitID);   // Bind the textBook.sParentUnitID   Input parameter
          stmt.setString( 3 ,sTextBookTypeID); // Bind the textBook.sTextBookTypeID Input parameter
          stmt.executeQuery();
          
PreparedStatement stmtSeqNumber = connection.prepareStatement
          ("select SQ_TEXTBOOK.CURRVAL from DUAL");
ResultSet rset = stmtSeqNumber.executeQuery();
           while  (rset.next()) 
          {
          sTextBookID=(String).valueOf(rset.getInt( 1 ));
          }
          
          System.out.println("Working textBook.teorUnitInsert(String , String, String) ");//trace
          

как видно значение генерируется последовательностью.
и значение получаем вторым запросом. хотелось бы сделать одним
запросом, т.е. добавить к первому RETURNING textBookID INTO somevar.
как это можно сделать ?
...
Рейтинг: 0 / 0
один PreparedStatement, вместо двух
    #33341827
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CallableStatement cstmt = conn.prepareCall("BEGIN ?:=pkg_something.new_text_book(?, ?, ?); END;");
cstmt.registerOutParameter( 1 , Types.INTEGER);
cstmt.setString( 2 , titleName);
cstmt.setInt( 3 , Integer.parseInt(sParentUnitID));
cstmt.setInt( 4 , Integer.parseInt(sTextBookTypeID));

cstmt.executeUpdate();

 int  bookId = cstmt.getInt( 1 );

можно и так: триггер before insert on textBook +
Код: plaintext
cstmt = conn.prepareCall("BEGIN INSERT INTO textBook(theme, parent, type) VALUES(?, ?, ?) RETURNING id INTO ?; END;");
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / один PreparedStatement, вместо двух
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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