Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разобраться со вставкой строки, плиз... / 9 сообщений из 9, страница 1 из 1
27.12.2004, 11:35
    #32845649
Unused name
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
Необходимо вставить строку в таблицу, но таким образом, чтобы возможно было вытащить значение какого-нибудь поля из только что вставленной строки...
т.е., сначала делаем таким образом (хотя можно использовать и PreparedStatement, лишь бы получилось, то что я описал):
Statement stmt = connection.createStatement();
ResultSet rset = stmt.executeQuery("INSERT ...");
а потом каким образом достать значение поля, кот-е заполняется автоматически (триггером)??? Подскажите, пожалуйста! Очень надеюсь на вашу помощь. Спасибо!
...
Рейтинг: 0 / 0
27.12.2004, 11:58
    #32845714
Maksim UM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
Если я правильно понял, нужно получить поля, которые автоматически
заполняются?!
Тогда нужно просто сделать
ResultSet rset = stmt.executeQuery("SELECT ...") этих полей.
...
Рейтинг: 0 / 0
27.12.2004, 12:17
    #32845767
Naug
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
1)добавлять уникальный ключ к вставляемой строке и потом вытаскивать её обратно
2)если это возможно воспроизвести функцию тригера и как-то вычислить эти значения
...
Рейтинг: 0 / 0
27.12.2004, 12:21
    #32845780
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
О какой БД идет речь? В Oracle допустима такая конструкция как:

Код: plaintext
1.
2.
3.
4.
insert into my_table (field1, field2, ... fieldN) 
values (?, ?, ... ?)
return fieldA, fieldB, ... fieldZ 
into ?, ?, ... ?

Т.е. можно через CallableStatement сразу после выполнения получить значения output-параметров.
...
Рейтинг: 0 / 0
27.12.2004, 12:46
    #32845833
Unused name
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
Спасибо, друзья, что откликнулись, но все не то... к сожалению.
Во избежание неправильного понимания моего вопроса (to Maksim UM), обрисую задачу более подробно:
Есть табличка Oracle (назовем её table_1), есть JSP-шка, в ходе выполнения которой я пытаюсь выполнить следующее:
выполнить запрос на вставку новой строки в таблицу table_1, в ходе данного запроса выполняется триггер, который формирует идэшник для этой таблицы (id_table_1); далее, соответственно, все значения заносятся в соотв-щие поля. После выполнения данного действа нужно вытащить этот самый сформированный идэшник (но это только например, т.к. в идеале нужно вытаскивать значение любого поля только что вставленной строки!!!).

Ессно, может сделать и так:
Denis PopovО какой БД идет речь? В Oracle допустима такая конструкция как:

Код: plaintext
1.
2.
3.
4.
insert into my_table (field1, field2, ... fieldN) 
values (?, ?, ... ?)
return fieldA, fieldB, ... fieldZ 
into ?, ?, ... ?

Т.е. можно через CallableStatement сразу после выполнения получить значения output-параметров.

Вот в том то и дело, что это можно сделать через CallableStatement, что я уже и делал, но не будешь же для каждой таблицы писАть функцию...
Необходимо вытащить значение поля с помощью средств самой Java...
Посему и мучаюсь, не зная как это выполнить...
Может быть есть еще какие соображения? Буду рад выслушать все советы и предложения! Спасибо!
...
Рейтинг: 0 / 0
27.12.2004, 12:53
    #32845845
Unused name
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
Sorry, Denis Popov , сразу че-т не понял... Т.е. ты предлагаешь просто засунуть данное выражение в Коллэйбл, выполнить, а потом тащить оттуда параметры гетСтрингами? !!! Как-то не додумался... И кстати, там разве синтаксис именно RETURN, а не RETURNING?
...
Рейтинг: 0 / 0
27.12.2004, 13:11
    #32845896
Unused name
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
Че-т не получается ничего: то "Неподдерживаемая функция", то "Отсутствует ключевое слово"...
Наверное, я че-т недопонимаю...
...
Рейтинг: 0 / 0
27.12.2004, 13:17
    #32845911
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
Ну да:) ИМХО CallableStatement может выполнять как вызовы функций. так и просто запросов, что-то вроде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
    Connection con =  null ;
    Statement st =  null ;
    CallableStatement cst =  null ;
     try  {
      DriverManager.registerDriver( new  oracle.jdbc.driver.OracleDriver());
      con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
      st = con.createStatement();
       try  {
        st.execute("drop table test");
      }  catch  (SQLException e) {
      }
      st.execute("create table test (test_id number(9))");
      cst = con.prepareCall(
        "begin\n" +
        "  insert into test (test_id) values (?) returning test_id into ?;\n" +
        "end;");
      cst.setInt( 1 ,  1 );
      cst.registerOutParameter( 2 , Types.INTEGER);
      cst.execute();
       int  id = cst.getInt( 2 );
      System.out.println("return: " + id);

    }  finally  {
       if  (st !=  null ) { st.close(); }
       if  (cst !=  null ) { cst.close(); }
       if  (con !=  null ) { con.close(); }
    }

Это для Oracle. Заметь, что сам запрос следует забрать в блок begin .. end в случае выполения его через CallableStatement и наличия output-параметров.

А RETURN или RETURNING - Oracle проглатывает оба слова, хотя по стандарту по-моему правильнее использовать RETURNING.
...
Рейтинг: 0 / 0
28.12.2004, 08:00
    #32846985
Unused name
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться со вставкой строки, плиз...
Точно! Denis Popov , спасибо тебе большое, а то я запутался как-то...
Все прекрасно, все работает!! Очень благодарен!
"Ну... как говорится, будете у нас..."
Нет, в самом деле: спасибо большое!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите разобраться со вставкой строки, плиз... / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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