Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
Может кто уже сталкивался с подобным... соединяюсь из хранимой процедуры к другой базе, пробую сделать запрос. Соединение проходит успешно, вот только запрос ничего не выдает. В чем может быть дело??? использую DB2 8. процедура написана на java. import java.sql.*; // Классы JDBC public class PRdeb { public static void pRdeb ( int[] SQLCODE, String[] SQLMessage, String[] comment, ResultSet[] rs1 ) throws Exception { try { // Load the JDBC driver Class.forName("com.ibm.db2.jcc.DB2Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } // Задать возвращаемые параметры SQLCODE[0] = 0; // Правильная SQLCODE SQLMessage[0] = "sql mess"; // Правильная SQLMessage comment[0] = "comment"; PreparedStatement stmt = null; boolean bFlag; String sql; String userid="userid"; // Declare variables for user ID and password String password="password"; try{ Connection con = DriverManager.getConnection("jdbc:db2://host:50000/DATABASE", userid, password); if (con == null){ comment[0] = "con == null"; } sql = "SELECT PROCSCHEMA, PROCNAME FROM SYSCAT.PROCEDURES"; stmt = con.prepareStatement( sql ); bFlag = stmt.execute(); rs1[0] = stmt.getResultSet(); } catch (SQLException e) { // Задать возвращаемые параметры SQLCODE[0] = e.getErrorCode(); SQLMessage[0] = e.getMessage(); // Закрыть открытые ресурсы try { if (rs1[0] != null) rs1[0].close(); if (stmt != null) stmt.close(); } catch (SQLException e2) { }; } } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 14:28 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
А так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 15:26 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinА так: Код: plaintext это уже пройдено, и так пробовал... Могу только гадать - может что не то с правами, но подключаемый из процедуры пользователь - админ базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 15:32 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
А вот это Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 16:05 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinА вот это Код: plaintext 1. Не лечит. что примечательно, вставка выполнилась успешно INSERT INTO sa.persons (person_name, person_lastname) VALUES('new name','new lastname') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 16:30 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
Спасибо моему коллеге по работе, бросил верную идею: результирующий набор данных срабатывал только для default:connection. Т.е. при подключении к другой базе мы отрабатывали все sql-скрипты, получали наборы данных, но не могли вернуть из процедуры набор данных, принадлежащие другому соединению, отличному от родной базы для хранимой процедуры. Почему? ответ не известен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 16:49 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
alexander_reshetnikov Mark BarinsteinА вот это Код: plaintext 1. Не лечит.Если вы будете закрывать ResultSet внутри процедуры, который хотите выдавать наружу, то, согласно доке, вы его не вернете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 16:59 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
Этот кусок сгенерил мастер построений в центре разработки DB2. ResultSet закрывается при генерации SQLException, что вполне логично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 17:25 |
|
||
|
java storedproc
|
|||
|---|---|---|---|
|
#18+
alexander_reshetnikovЭтот кусок сгенерил мастер построений в центре разработки DB2. ResultSet закрывается при генерации SQLException, что вполне логично.Виноват, не обратил внимание на то, что он в catch блоке закрывается. Тут дело вот в чем: Все это работает с db2:default:connection из-за специальной обработки такого соединения. В своих примерах они в теле процедуры его (Connection) закрывают и ничего - ResultSet виден. Но если закрыть внешнее (не default) соединение, то связанный с ним ResultSet тоже закрывается до его обработки. Выход: копировать ResultSet во временную таблицу через default connection и возвращать результат запросом из временной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2007, 18:01 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=116&tid=1604721]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 258ms |
| total: | 405ms |

| 0 / 0 |
