Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / вызываем процедуру, содержащую SQL из триггера / 3 сообщений из 3, страница 1 из 1
23.07.2007, 11:49
    #34676726
db2zos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызываем процедуру, содержащую SQL из триггера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TABLE T1(c1 INT)!
CREATE TABLE T2(c1 INT)!

CREATE PROCEDURE SP1 ()
LANGUAGE SQL
WLM ENVIRONMENT WLMENV
BEGIN
   DECLARE INT_VAR INT;
   SELECT COUNT(*) INTO INT_VAR FROM T2; 
END!

CREATE TRIGGER TRG1 
AFTER UPDATE ON T1
FOR EACH STATEMENT 
MODE DB2SQL 
BEGIN ATOMIC 
    CALL SP1();
END!

Создаётся без ошибок, но при активации тригера в runtimeвозникает ошибка -

DB21034E Данная команда обрабатывалась как оператор SQL, поскольку она не
является допустимой командой процессора командной строки. При обработке SQL
было получено сообщение:
SQL0723N Ошибка в триггерном операторе SQL в триггерной процедуре
"TESTU1.TRG1". Код ошибки SQLCODE "51002", состояние SQLSTATE
"TESTDB1.TESTU1.SQL75847.181D60090CC526DE,DISTS", элементы сообщения "".
SQLSTATE=09000

Если урать SQL запроос из хранимой процедуры отрабатывает нормально. Не хватает какого-то пакета? В чём проблема?
...
Рейтинг: 0 / 0
23.07.2007, 14:21
    #34677289
вызываем процедуру, содержащую SQL из триггера
DB2 for z/OS? Какой версии?
С помощью чего создаешь хранимую процедуру?
Если через Command Center/Control Center, то она будет создана пустой, т.е. тело процедуры будет проигнорировано.
SQL-хранимую для DB2 for z/OS можно создать при помощи Stored Procedure Builder(DB2 Client 7.x), DB2 Developement Center(DB2 Client 8.x) или DB2 Developer Workbench.
В этом случае на z/OS должна быть настроена хранимая процедура DSNTPSMP, которая и производит компиляцию SQL-процедуры и BIND пакета это процедуры.

Если все это есть, то проверь работает ли хранимая отдельно от триггера.
Может оказаться например, что после компиляции процедуры не выполняется (или выполняется с ошибкой) WML_REFRESH, что будет приводить к тому, что для исполнения хранимой процедуры будет использоваться старый загрузочный модуль, а пакет уже будет новый, в результате несоответствие версии модуля и пакета, которое как раз и может давать такую ошибку.
Или же наоборот, не проходит BIND новой версии пакета. И то и другое должно быть видно в логе компиляции хранимой процедуры. Посмотри есть ли там предупреждения.
...
Рейтинг: 0 / 0
23.07.2007, 16:18
    #34677774
db2zos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызываем процедуру, содержащую SQL из триггера
база 8.1 for z/OS

процедура создаётся и вызывается отдельно от триггера нормально. Есть ли какие-либо требования к WLM ENV для вызова процедур из триггера?
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / вызываем процедуру, содержащую SQL из триггера / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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