Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Никак не получается заставить заработать EXECUTE IMMEDIATE Есть следующий кусок кода: CREATE TRIGGER Insert_HISTORY_TRIGGER_SOURCE AFTER INSERT ON HISTORY_TRIGGER_SOURCE REFERENCING NEW TABLE AS NEW_TAB FOR EACH ROW BEGIN ATOMIC DECLARE l_strXLMAttr varchar(1024); DECLARE v_strQuery varchar(1024); FOR C1 AS SELECT colname FROM syscat.columns WHERE tabname = 'HISTORY_TRIGGER_SOURCE' DO IF (l_strXLMAttr IS NULL) THEN ELSE SET l_strXLMAttr = l_strXLMAttr || ', '; END IF; SET l_strXLMAttr = l_strXLMAttr || ' t.' || C1.colname || ' as ' || colname; END FOR; SET v_strQuery = 'update DB2USER.HISTORY_TRIGGER set row_version = ' || l_strXLMAttr; EXECUTE IMMEDIATE v_strQuery; END@ При компиляции, гнусно ругается на EXECUTE IMMEDIATE, типа : SQL0104N Обнаружен неправильный элемент "EXECUTE IMMEDIATE" после текста "' || l_strXLMAttr; ". Список возможных правильных элементов: "<signal_stmt_head> Подскажите, в чем трабл. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 14:36 |
|
||
|
EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
Добрый день. попробуйте проверить правильно ли генерится запрос. Для этого можно или создать курсор в который поместить значение переменной l_strXLMAttr или создать какую-нибудь табличку в которую поместить вашу переменную. Тоже, если вы используете какое -нибудь стороннее приложение в качестве консоли, то возможно что оно глючит. Попробуйте создать триггер в коммандной строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2009, 18:29 |
|
||
|
EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
В справке описано тело триггера: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Про EXECUTE IMMEDIATE ничего не сказано. И ещё, хоть на этапе компиляции ошибки не будет, но сам код триггера не совсем корректен. Переменная l_strXLMAttr не инициализирована. Всё время выполнения она будет NULL, так же как и v_strQuery. Если же исправить это, то в EXECUTE IMMEDIATE попадёт строка вида: Код: plaintext --------------------------------------------------------- IS NULL OR NOT IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 08:57 |
|
||
|
EXECUTE IMMEDIATE
|
|||
|---|---|---|---|
|
#18+
ihorek, EXECUTE IMMEDIATE не входит в подмножество inline SQL PL, употребляемое в триггерах и функциях. Можно создать SP с EXECUTE IMMEDIATE внутри и вызывать ее через доступный в inline CALL. Пример из DB2 Cookbook: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Вызов SP: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2009, 13:43 |
|
||
|
|

start [/forum/topic.php?fid=43&gotonew=1&tid=1603118]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
188ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 275ms |
| total: | 573ms |

| 0 / 0 |
