Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Делаю вызов: select * from ba_death_pen('08.05.2004','08.05.2004') Ругается: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0104N Обнаружен неправильный элемент "(" после текста "* from ba_death_pen". Список правильных элементов: "WHERE". SQLSTATE=42601 Вызываю процедуру без параметров: select * from ba_death_pen Ругается: COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0204N Имя "PD190439.BA_DEATH_PEN" не было определено. SQLSTATE=42704 Такие же ошибки выдаёт программа DB2 SQL В чём причина ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 09:02 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
В DB2 вы не можете делать селект из хранимой процедуры. Если вы хотите ее вызвать, используйте Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 09:21 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinВ DB2 вы не можете делать селект из хранимой процедуры. Если вы хотите ее вызвать, используйте Код: plaintext Сделал ! И вот что пишет : COM.ibm.db2.jdbc.DB2Exception: [IBM][CLI Driver][DB2/NT] SQL0444N Подпрограмма "ba_death_pen" (с уникальным именем "SQL060524111300500") реализуется при помощи кода функции "ba_death_pen", находящегося в библиотеке или в пути "\ba_death_pen". Этот код функции недоступен. Код причины: "4". SQLSTATE=42724 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 10:14 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
На каком языке процедура написана? Скрипт создания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 10:32 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinНа каком языке процедура написана? Скрипт создания? SQL Судя по коду ошибки, надо прописать путь в переменной окруженя path. Но вот какой путь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 11:08 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
CREATE PROCEDURE PD190439.BA_DEATH_PEN ( IN i_n_date DATE, IN i_k_date DATE, OUT o_family VARCHAR(40), OUT o_name VARCHAR(40), OUT o_father VARCHAR(40), OUT o_d_rogd DATE, OUT o_d_smer DATE, OUT o_adres VARCHAR(200), OUT o_pers_nomert VARCHAR(11) ) SPECIFIC PD190439.xb DYNAMIC RESULT SETS 1 ------------------------------------------------------------------------ -- SQL Хранимая процедура -- o_family -- o_name -- o_father -- o_d_rogd -- o_d_smer -- o_adres -- o_pers_nomert ------------------------------------------------------------------------ P1: BEGIN -- Объявить переменные -- DECLARE o_family_TMP VARCHAR(40) DEFAULT ' '; -- DECLARE o_name_TMP VARCHAR(40) DEFAULT ' '; -- DECLARE o_father_TMP VARCHAR(40) DEFAULT ' '; -- DECLARE o_d_rogd_TMP DATE DEFAULT '2004-05-08'; -- DECLARE o_d_smer_TMP DATE DEFAULT '2004-05-08'; -- DECLARE o_adres_TMP VARCHAR(200) DEFAULT ' '; -- DECLARE o_pers_nomert_TMP VARCHAR(11) DEFAULT ' '; -- Объявить указатель DECLARE cursor1 CURSOR WITH RETURN FOR SELECT DEATH.FAMILY , DEATH.NAME_L , DEATH.FATHER , DEATH.D_ROGD , DEATH.D_SMER , DEATH.ADRES , DEATH.L_SCHET FROM DEATH AS DEATH WHERE DEATH.D_SMER >= BA_DEATH_PEN.i_n_date AND DEATH.D_SMER <= BA_DEATH_PEN.i_k_date; -- Указатель оставлен открытым для программы клиента OPEN cursor1; -- SET o_family = o_family_TMP; -- SET o_name = o_name_TMP; -- SET o_father = o_father_TMP; -- SET o_d_rogd = o_d_rogd_TMP; -- SET o_d_smer = o_d_smer_TMP; -- SET o_adres = o_adres_TMP; -- SET o_pers_nomert = o_pers_nomert_TMP; -- Fetch cursor1 -- into o_family, o_name, o_father, o_d_rogd, o_d_smer, o_adres, o_pers_nomert; END P1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 11:11 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
А так? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 11:25 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinА так? Код: plaintext Пишет, что неправильное количество параметров. А если параметры убираю, выдаёт предыдущую ошибку. Явно какого - то пути в path не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 12:44 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. Символы "?", соответствующие выходным параметрам, убирать нельзя. Пути здесь ни при чем. Проверьте еще раз, соответствует ли количество параметров в процедуре тому, как вы ее вызываете? У вас одно процедура с таким именем, или есть еще с этим именем, но в другой схеме? А то вы, я вижу, создаете и вызываете процедуру без указания схемы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 13:15 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinА так? Код: plaintext Почему так? Это же не Oracle. Надо указать типы параметров, наподобие: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 13:20 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Код: plaintext 1. 2. Символы "?", соответствующие выходным параметрам, убирать нельзя. Пути здесь ни при чем. Проверьте еще раз, соответствует ли количество параметров в процедуре тому, как вы ее вызываете? У вас одно процедура с таким именем, или есть еще с этим именем, но в другой схеме? А то вы, я вижу, создаете и вызываете процедуру без указания схемы... Количество параметров соответствует. Процедура уникальная. Почему тогда в руководстве по ошибкам написано, что не все пути прописаны в переменных окружения ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 13:37 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa Почему так? Это же не Oracle. ... (не уверен в точности, как должны быть описаны OUT-параметры, но скорее всего так, ибо DB2 всегда желает знать типы параметров, поскольку возможны разные одноимённые процедуры и функции, различающиеся только типами параметров). Речь идет о процедурах, а не о функциях. Вы не создадите 2-х процедур типа Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 13:40 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Кстати, приведённый пример кода SP наглядно показывает, какая же гадость SP в таких применениях, в противоположность SQL-функциям, возвращающим резалт сет. Не говоря о том, что в данном примере мне даже и SQL-функция кажется лишней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 13:43 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
кусок java-кода с вызовом выложите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 13:47 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa Надо указать типы параметров, наподобие: при вызове из java тип парметра задается при его регистрации , например: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 13:54 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Не знаю, как в жабе, а в CLI, насколько я помню, указание типов параметров в духе Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 14:06 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
А, нет, я это позабыл (Smalltalk меня избавляет от таких подробностей). Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 14:09 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Вот это да! Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 14:16 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaКстати, приведённый пример кода SP наглядно показывает, какая же гадость SP в таких применениях, в противоположность SQL-функциям, возвращающим резалт сет. Не говоря о том, что в данном примере мне даже и SQL-функция кажется лишней. почему-же? на жаве,Срр,паскале(дельфе) достаточно просто вытаксивать resultset из ХП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 14:29 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
db2java Victor MetelitsaКстати, приведённый пример кода SP наглядно показывает, какая же гадость SP в таких применениях, в противоположность SQL-функциям, возвращающим резалт сет. Не говоря о том, что в данном примере мне даже и SQL-функция кажется лишней. почему-же? на жаве,Срр,паскале(дельфе) достаточно просто вытаксивать resultset из ХП. Что, если вы хотите не все строчки из этого резалтсета, или не все колонки, или сджойнить его с какой-то другой таблицей? Вы этой возможности лишились. Что приобрели взамен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 16:04 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Victor Metelitsa тут разница таже, что и static vs dynamic sql (при использовании функции inline) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2006, 16:25 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Всем спасибо ! Я разобрался. Но остался ещё один вопрос. При выполнении опубликованного выше кода, в ResultSet попадает только одна строка. Почему при выполнении : Fetch cursor1 into o_family, o_name, o_father, o_d_rogd, o_d_smer, o_adres, o_pers_nomert; возвращается из ХП только одна строка. Как вернуть все строки ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 08:11 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Если вы хотите вернуть все строки, не делайте fetch. Последним оператором по работе с курсором должен быть open. Когда вы делаете fetch, наружу будут отдаваться только "неот-fetch-енные" строки курсора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 09:17 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
db2java Victor Metelitsa тут разница таже, что и static vs dynamic sql (при использовании функции inline) С SP в том примере у вас всегда будет static. C аналогичной UDF у вас есть выбор - static (если вызовете select .. from .. через SQLJ) или dynamic. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 09:18 |
|
||
|
Вызов хранимой процедуры DB2 из Java
|
|||
|---|---|---|---|
|
#18+
Mark BarinsteinЕсли вы хотите вернуть все строки, не делайте fetch. Последним оператором по работе с курсором должен быть open. Когда вы делаете fetch, наружу будут отдаваться только "неот-fetch-енные" строки курсора. А фрагмент кода можно . Я fetch убираю и у меня вообще процедура не компилится. Кстати, в набор данных попадают все записи, кроме первой. Первая почему-то теряется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2006, 11:26 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=33748574&tid=1605320]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 345ms |

| 0 / 0 |
