powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Динамический запрос + view + xml-параметр
4 сообщений из 4, страница 1 из 1
Динамический запрос + view + xml-параметр
    #37900757
K.T.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только разобрались с тем, как правильно передавать xml-параметр в динамические запросы - всплыла другая проблема: этот самый запрос категорически не хочет ничего выбирать из вьюшки.
Итак:
DB2 10 под z/os.
Пишем:
Код: plsql
1.
2.
3.
4.
5.
CREATE VIEW MY_VIEW
AS
SELECT * FROM TABLE1
UNION ALL
SELECT * FROM TABLE2;


Теперь если написать
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE PROCEDURE MY_PROC(IN PARAM XML)
RESULT SETS 1
PL: BEGIN
DECLARE query VARCHAR(31000);
DECLARE c1 cursor with return for s1;
SET query= 'SELECT * FROM TABLE1
WHERE ID IN (select t.id_payment from 
             xmltable(''$c/begin/row'' passing CAST(? as xml) as "c"
             columns id_payment BIGINT path ''id_payment'') as t)';
PREPARE s1 FROM query;
OPEN c1 USING PARAM;
END PL


Все замечательно работает
Но:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE PROCEDURE MY_PROC(IN PARAM XML)
RESULT SETS 1
PL: BEGIN
DECLARE query VARCHAR(31000);
DECLARE c1 cursor with return for s1;
SET query= 'SELECT * FROM MY_VIEW
WHERE ID IN (select t.id_payment from 
             xmltable(''$c/begin/row'' passing CAST(? as xml) as "c"
             columns id_payment BIGINT path ''id_payment'') as t)';
PREPARE s1 FROM query;
OPEN c1 USING PARAM;
END PL


Выдает ошибку коннекта с сервером:
A database manager error occurred.SQLCODE: -4499, SQLSTATE: 08001 - [jcc][t4][2030][11211][3.62.56] Ошибка связи при работе с гнездом соединения, входным потоком гнезда или выходным потоком гнезда. Положение ошибки: Reply.fill() - insufficient data (-1). Сообщение: Недостаточно данных. ERRORCODE=-4499, SQLSTATE=08001
Мне ничего не мешает переписать запрос без использования вьюшки, просто хочется разобраться, к чему это.
...
Рейтинг: 0 / 0
Динамический запрос + view + xml-параметр
    #37900800
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте переписать блок WHERE используя XMLEXISTS.
ИМХО работа с xml в DB2 еще не доведена до ума, т.к. глюк на глюке получается.
...
Рейтинг: 0 / 0
Динамический запрос + view + xml-параметр
    #37901289
K.T.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И снова спасибо! Сегодня попробую. ИМХО - вся ДБ2 еще не доведена до ума, т.к. там везде глюк на глюке :)
...
Рейтинг: 0 / 0
Динамический запрос + view + xml-параметр
    #37901625
K.T.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз спасибо! Да, так оно работает:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE MY_PROC(IN PARAM XML)
RESULT SETS 1
PL: BEGIN
DECLARE query VARCHAR(31000);
DECLARE c1 cursor with return for s1;
SET query= 'select * from MY_VIEW
where xmlexists(''$c/begin/row[id_payment=$p]'' passing CAST(? as xml) as "c",ID_PAYMENT as "p")';
PREPARE s1 FROM query;
OPEN c1 USING PARAM;
END PL
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Динамический запрос + view + xml-параметр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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