Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.07.2007, 15:19
|
|||
|---|---|---|---|
|
|||
Вызов хранимой процедуры из триггера |
|||
|
#18+
DB2 v9.1 Fix #2: "Сервер баз данных = DB2/NT 9.1.2", WinXP SP2 Имеем триггер на ловлю изменения поля CUSTOUTDATE с NULL на дату: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Попытка добавить "DECLARE SQLCODE INTEGER DEFAULT 0;" выдает ошибку: Код: plaintext 1. 2. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вообще, принципиально, возможно или нет вернуть код, возвращаемый ХП? Я могу использовать вызов ХП и из другого места, но мне интересен сам факт наличия или отсутствия такой возможности. Может кто сталкивался с такой проблемой? Вчерашние поиски в этом форуме и в доках ничего не дали. Поиск продолжается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.07.2007, 15:50
|
|||
|---|---|---|---|
|
|||
Вызов хранимой процедуры из триггера |
|||
|
#18+
Триггер не может возвращать никаких кодов. В триггере вы можете сгенерировать исключение, в зависимости от условия (как вы это и делаете). Объясните подробнее, что вы хотите сделать с кодом ошибки, который возвращает ХП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.07.2007, 16:24
|
|||
|---|---|---|---|
|
|||
Вызов хранимой процедуры из триггера |
|||
|
#18+
Mark BarinsteinТриггер не может возвращать никаких кодов. В триггере вы можете сгенерировать исключение, в зависимости от условия (как вы это и делаете). Объясните подробнее, что вы хотите сделать с кодом ошибки, который возвращает ХП? При сохранении записи в SC.TABLE1 и указании даты в поле CUSTOUTDATE после записи в таблицу сработает триггер. В случае ошибки, триггер сгенерирует exception и в вызывающую программу sqlcode из ХП не попадет, поскольку в этом случае всегда выдается sqlcode = -438. В принципе можно получить SQLSTATE, передавая его OUT параметром из ХП и выбросить его в SIGNAL, вот только я не знаю достаточно ли этого для формирования сообщения об ошибке в вызывающей программе. Пора повторять матчасть и в отпуск :) Сейчас попробую. Другой вариант прямо вызывать в программе эту ХП после сохранения записи, но это потребует доработки вызывающей программы, да и нет "страховки", на случай, если дату установят "вручную" (скриптом), потому пытаюсь сделать более правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.07.2007, 16:42
|
|||
|---|---|---|---|
|
|||
Вызов хранимой процедуры из триггера |
|||
|
#18+
Если надо возвратить программе код из процедуры, можно передать его строковое представление через diagnostic message (2-параметр RAISE_ERROR), а потом в приложении его поймать. Только уберите get diagnostics и case правльно напишите... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.07.2007, 16:56
|
|||
|---|---|---|---|
|
|||
Вызов хранимой процедуры из триггера |
|||
|
#18+
Mark BarinsteinЕсли надо возвратить программе код из процедуры, можно передать его строковое представление через diagnostic message (2-параметр RAISE_ERROR), а потом в приложении его поймать. Вот тут то и "засада", поскольку ловить - это значит дорабатывать, а ведь ошибку может выдать не триггер, а сам процесс сохранения, т.е. до триггера дело может и не дойти. Я понимаю, что тоже можно выкрутиться, но как то хотелось сделать стандартно. Ну раз не судьба, тогда будем искать приемлемый вариант из "кривых". Спасибо за информацию. Mark BarinsteinТолько уберите get diagnostics и case правльно напишите... Это да, спасибо, я уже правлю сижу, а этот пример брал из хелпа, а там так и написано (case) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=43&mobile=1&tid=1604450]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 276ms |
| total: | 403ms |

| 0 / 0 |
