Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Может я туплю, но не могу понять - можно ли замапить функцию на подмапленном сервере для DB2? Процедуры нашел, таблицы нашёл, даже Nickname есть, а вот функции что то не нашел в интерфейсе. Картинку прикрепляю. P.S. DB2 9.7 под windows, подмапленные федеративные серверы тоже db2. СПАСИБО за ответы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 10:49 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Картинку забыл: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 10:58 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoed, CREATE FUNCTION (template) CREATE FUNCTION MAPPING Но ей богу, если такое делать, то надо понимать возможные последствия. Невинно выглядящая конструкция (например, слепленная через год/другой пришедшим вслед разработчиком) с вызовом этой ф-ии на достаточно большом result set'е породит дёрганье этой удалённой ф-ии на каждую строчу. Использование в предикате в where на многомиллионной таблицы может вообще невзначай породить полный table scan с опять таки серией отдельных коммуникаций на каждую исходную строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 14:06 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
CawaSPb, Result Set возвращает не более 10 строк, просто серваки разные, но за ответ и заботу спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 14:11 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Радость была преждевременной, куда ни копни поглубже в DB2, везде засады!!! Хотел замапить табличную функцию и... Create function mapping to table or row functions: A create function mapping to remote functions that returns a table or a row is not supported in a federated database. Разрабочикам DB2 антиреспект!!!!!!!!!!!!!!!!!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 14:27 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoed, В чём проблема, возвращай XML (отмечу, что это именно бинарная структура, а не текстовое представление, которое надо парсить), а на своей стороне оберни удалённый вызов табличной ф-ей. То, что разработчики DB2 не сделали инструмент для уж слишком лёгкого "стреляния себе в ногу" - и слава богу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 15:27 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
CawaSPbmedoed, В чём проблема, возвращай XML (отмечу, что это именно бинарная структура, а не текстовое представление, которое надо парсить), а на своей стороне оберни удалённый вызов табличной ф-ей. То, что разработчики DB2 не сделали инструмент для уж слишком лёгкого "стреляния себе в ногу" - и слава богу. Правильно, берите пример с Марка, если есть какое то ограничение в DB2, то это не потому что ядро кривое или менеджеры тупые или ещё чего, но это значит, что программист DB2 хочет, чего то неестественное!!! P.S. у меня возвращается всегда одна строка, поэтому я сделаю функцию, которая будет возвращать один столбец(число) и её замаплю. Но вообщем DB2 УГ! Имхо!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2014, 16:13 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Подниму вопрос и обращусь к знатокам! А если сделать процедуру через DYNAMIC RESULT SETS 1 возвращающую курсор, в ней вызывать табличную функцию (это все на одной базе). Можно потом будет на другой базе через федеративную связь такую процедуру вызывать и получать данные из нее. Марк, не уважите ответом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 17:22 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoedА если сделать процедуру через DYNAMIC RESULT SETS 1 возвращающую курсор, в ней вызывать табличную функцию (это все на одной базе). Можно потом будет на другой базе через федеративную связь такую процедуру вызывать и получать данные из нее.Да, можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2014, 18:21 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Марк, спасибо! А как мне потом результат такой процедуры в темповую таблицу запихнуть на основной базе? Попробовал так, не работает: declare global temporary table SESSION.TEMP_REVEN (REVENUE_MATH decimal(28,14), REVENUE DECIMAL (28,14)) with replace on commit preserve rows not logged; insert into SESSION.TEMP_REVEN(REVENUE_MATH, REVENUE) from table(call DAT3.TEST_MAP (13399)); -- процедура курсор возвращает select * from SESSION.TEMP_REVEN; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 11:40 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoed, - Объявить DAT3.TEST_MAP как READS SQL DATA - в вызывающей процедуре обработать result set и вставить записи во временную таблицу как-то так: пример Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 15:12 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein, Марк, сделал как вы советовали , написал процедуру: Код итоговой процедуры: CREATE OR REPLACE PROCEDURE "WEB"."GET_SAFE_ALL" ( ) begin DECLARE SQLCODE INT; DECLARE l_REVENUE_MATH decimal(28,14); DECLARE l_REVENUE decimal(28,14); DECLARE L1 RESULT_SET_LOCATOR VARYING; DECLARE STR_EXEC VARCHAR(32000); declare C_REZ cursor with return for s1; declare global temporary table SESSION.TEMP_REVEN (REVENUE_MATH decimal(28,14), REVENUE DECIMAL (28,14)) with replace on commit preserve rows not logged; call DAT3.TEST_MAP (13399); ASSOCIATE LOCATOR (L1) WITH PROCEDURE DAT3.TEST_MAP; ALLOCATE C1 CURSOR FOR RESULT SET L1; FETCH C1 INTO l_REVENUE_MATH, l_REVENUE; WHILE (SQLCODE!=100) DO insert into SESSION.TEMP_REVEN(REVENUE_MATH, REVENUE) values (l_REVENUE_MATH, l_REVENUE); FETCH C1 INTO l_REVENUE_MATH, l_REVENUE; END WHILE; CLOSE C1; SET STR_EXEC = 'select REVENUE_MATH, REVENUE from SESSION.TEMP_REVEN'; PREPARE s1 FROM STR_EXEC ; OPEN C_REZ; end; Вызываю и возникает ошибка: Lookup Error - DB2 Database Error: ERROR [25000] [IBM][DB2/NT64] SQL30090N Operation invalid for application execution environment. Reason code = "18". В чем трабла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 15:44 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoed, Что выдает на источнике: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 15:56 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Mark Barinsteinmedoed, Что выдает на источнике: Код: sql 1. 2. 3. SQL_DATA_ACCESS M ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 16:01 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoedMark Barinsteinmedoed, Что выдает на источнике: Код: sql 1. 2. 3. SQL_DATA_ACCESS M Я же написал, что надо: - Объявить DAT3.TEST_MAP как READS SQL DATA Это значит, что надо пересоздать процедуру как-то так: Код: sql 1. 2. 3. 4. После этого запрос должен возвратить R вместо M. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 16:22 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
Mark Barinsteinmedoedпропущено... SQL_DATA_ACCESS M Я же написал, что надо: - Объявить DAT3.TEST_MAP как READS SQL DATA Это значит, что надо пересоздать процедуру как-то так: Код: sql 1. 2. 3. 4. После этого запрос должен возвратить R вместо M. Марк, да я все правильно сделал. Только это верно для базы источника, а вот для базы потребителя надо походу заново мапить процедуру, чтобы она стала R - сейчас попробую. Не ожидал я просто такой подставы. Отпишусь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2014, 16:44 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoedМарк, да я все правильно сделал. Только это верно для базы источника, а вот для базы потребителя надо походу заново мапить процедуру, чтобы она стала R - сейчас попробую. Не ожидал я просто такой подставы. Отпишусь... Марк, спасибо все получилось, не так красиво как хотелось бы, но сработало! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 11:34 |
|
||
|
Замапить функцию для federated server - можно?
|
|||
|---|---|---|---|
|
#18+
medoed, Если интересно, то можно и без временных таблиц. Как-то так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2014, 19:08 |
|
||
|
|

start [/forum/topic.php?fid=43&tid=1601100]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 130ms |

| 0 / 0 |
