|
Не гарантируется, что функция не обновит БД
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть у меня parallel_enable pipelined функция func1 в пакете package1 которая возвращает с помощью select * from table(package1.func1('306,307')); рекордсет на основании переданных ей в строке айдишников. и нужно мне эту функцию слегка изменить и вставить в нее вызов процедуры "proc2" из mssql по линку (процедура эта просто читает у себя данные и возвращает в out параметрах). я вставил этот вызов: resultt:=proc2@link_gw4mssql(in_params,out_params); а он мне при вызове это: ORA-06571: Не гарантируется, что функция proc2 не обновит БД. пробовал добавить в объявление пакета: PRAGMA RESTRICT_REFERENCES (func1, WNDS); после чего не компилится body с сообщением Error(1587,1): PLS-00452: Subprogram 'func1' violates its associated pragma Видел что можно еще что то вроде этого: PRAGMA RESTRICT_REFERENCES (get_cards, WNDS, TRUST); после этого все компилируется, но при вызове снова ORA-06571 как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 18:38 |
|
Не гарантируется, что функция не обновит БД
|
|||
---|---|---|---|
#18+
Попробуйте звать proc2@link_gw4mssql в автономной транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 19:27 |
|
|
start [/forum/topic.php?fid=52&fpage=39&tid=1880999]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 128ms |
0 / 0 |