Работа через DB Link без использования "EXECUTE IMMEDIATE"

SQL-Talker
Дата: 25.03.2011 15:50:53
[GMAP]Такая задачка нарисовалась:

В отдельном справочнике хранятся названия ДБ Линков, они могут добавляться, меняться, удаляться.
Мне нужно из своей процедуры в зависимости от разных условий лезть по этим линкам на сервера, выполнять там запросы, процедуры из пакетов и т.п.

Пока что на ум приходит только делать это через EXECUTE IMMEDIATE.
Но хотелось бы обойтись без этого. Возможно ли?[/GMAP]
Elic
Дата: 25.03.2011 15:54:07
SQL-Talker
делать это через EXECUTE IMMEDIATE.
Но хотелось бы обойтись без этого. Возможно ли?
Да. Посредством dbms_sql
-2-
Дата: 25.03.2011 15:56:57
"добавляться, меняться, удаляться" - железный аргумент против статики или за автогенерацию кода.
SQL-Talker
Дата: 25.03.2011 16:25:09
-2-
"добавляться, меняться, удаляться" - железный аргумент против статики или за автогенерацию кода.


В настоящий момент серверов порядка трех десятков. Их состав постоянно меняется (типа аутсорсинг).
Всякий раз переписывать пакеты это во-первых трудоемко, во-вторых можно и напортачить в очередной раз. Ну и так далее.

Вообще я надеялся что можно было бы обойтись без того чтобы формировать строку кода типа
v_sql := 'select * from '||v_my_table_name
который далее нужно исполнять либо посредством execute либо dbms_sql
Не хотелось бы предоставлять хоть теоретическую возможность взлома посредством инъекций.

Как и возможно ли - не знаю, посему и спрашиваю.
-2-
Дата: 25.03.2011 16:33:04
SQL-Rektal
возможно ли
Ну так чего ты хочешь-то? Автогенерация или динамика.
SQL-Talker
Дата: 25.03.2011 17:12:53
-2-
Автогенерация или динамика.


Динамика я так понимаю это как раз вариант с execute immidiate либо dbms_sql
А что ты имеешь в виду под автогенерацией?
SQL-Talker
Дата: 25.03.2011 17:29:47
-2-,

По поводу же того чего я хочу - я хочу знать есть ли возможность указать что выполнить запрос или процедуру надо на другом сервере, имя линка к которому у меня хранится в переменной, в таблице и т.п..

Скажем, что-нибудь такое - на определенном шаге указываем открыть сессию на сервере, на который указывает линк с таким-то именем и далее код выполняется во вновь открытой сессии, пока сессию не закрыли.
Ну или что нибудь другое в этом духе. В таком случае ничего налету генерировать не придется.

Честно говоря, не уверен, что такая возможность есть.. Ну а вдруг, таки есть, да я не знаю? ))
-2-
Дата: 25.03.2011 17:34:50
джоб:        dbms_sheduler/destination
скрипт: sqlplus ...@линк
блок/запрос: dbms_sql@линк
orawish
Дата: 25.03.2011 17:35:04
SQL-Talker
-2-
Автогенерация или динамика.


Динамика я так понимаю это как раз вариант с execute immidiate либо dbms_sql
А что ты имеешь в виду под автогенерацией?

автоматическая генерация статического хранимого кода