Вызов внешних процедур в PL/SQL

Natalya Arkhipova
Дата: 29.07.2005 11:05:29
Хочется вызывать внешнюю процедуру в операторе SQL.
Типа такого:
select CalcParamFunc from dual;
Естественно получается сообщение о несоблюдении функцией ext_func уровня
строгости.

Функция задана так:
create or replace function CalcParamFunc
return number as external
LIBRARY LIBRARY_CALCPARAM
NAME "CalcParamFunc"
CALLING STANDARD C;


Вопрос: можно ли это как-то обойти?
Спасибо.
Vadim_Maximov
Дата: 29.07.2005 11:21:45
Хм...вот интересно, можно ли внешним процедурам указывать прагму autonomous_transaction? :)
А вообще ИМХО это что-то из серии запуска калькулятора в триггере. Зачем вам такое понадобилось?
Natalya Arkhipova
Дата: 29.07.2005 11:24:21
Нужно создать вью, где в одной из колонок должен быть результат выполнения внешней процедуры.
VasyakinM
Дата: 29.07.2005 11:40:21
Можно попробовать сделать функцию обертку для этой, где указать
autonomous_transaction
Natalya Arkhipova
Дата: 29.07.2005 11:44:04
VasyakinM
Можно попробовать сделать функцию обертку для этой, где указать
autonomous_transaction


Это как? Подскажите, пожалуйста, подробнее..
Natalya Arkhipova
Дата: 29.07.2005 12:00:51
pragma autonomous_transaction не проходит.
Либо этого еще нет в 8.0.5, либо есть только в Enterprise.
А у меня Standard.
Владимор Конев
Дата: 29.07.2005 12:08:03
Natalya Arkhipova
Хочется вызывать внешнюю процедуру в операторе SQL.
Типа такого:
select CalcParamFunc from dual;
Естественно получается сообщение о несоблюдении функцией ext_func уровня
строгости.
Если под уровнем строгисти подразумевается PURITY LEVEL,
То тебе сюда
Владимор Конев
Дата: 29.07.2005 12:19:17
Кстати, уровень TRUST - говорит ораклу примерно следующее:
"Данную функцию даже и не проверяй, просто верь мне, там всё тип-топ"

Это было введено специально для возможности выполнять JAVA / C - код из PL/SQL-кода.
При указании TRUST оракл ведет себя примерно так:
1) Обрабатывает функцию, как удовлетворяющую всем условиям чистоты, но реально проверки этих условий не осуществляет
2) Обрабатывает все процедуры и функции, вызываемые из функции с прагмой
PRAGMA RESTRICT_REFERENCES(func_name, TRUST),
так, как если бы они тоже удовлетворяли всем уровням чистоты.
Natalya Arkhipova
Дата: 29.07.2005 12:21:58
Я в курсе всего, что было по ссылке. Только вопроса это все не решает.
Я не могу вызвать из селекта внешнюю процедуру, в версии оракла 8.0.5 standard. Предложите что-нибудь конкретное?
Natalya Arkhipova
Дата: 29.07.2005 12:24:08
Владимор Конев

PRAGMA RESTRICT_REFERENCES(func_name, TRUST),
так, как если бы они тоже удовлетворяли всем уровням чистоты.


Спасибо, но это тоже не проходит. Наверно нужен Enterprise....