9 / 9 / 2
Регистрация: 25.11.2012
Сообщений: 115
|
|
1 | |
Динамическое создание DATABASE LINK в процедуре20.06.2017, 23:29. Показов 2781. Ответов 1
Метки database link, execute dblink creating, g, procedure, динамическое создание объектов (Все метки)
Добрый вечер.
Преамбула: Кликните здесь для просмотра всего текста
Есть одна база данных. Есть большое количество пользователей, каждому сопоставлен пользователь (роль) в базе. Доступа к таблицам нет, выборку можно сделать только из представлений, а контексты таким образом, что в представление выбираются только те данные, к которым есть доступ у пользователя. И есть вторая база. На ней есть пользователь с админскими правами. Суть: Кликните здесь для просмотра всего текста
Появилась необходимость автоматизировать выборку из первой БД, причем в запросе должны участвовать еще некоторые таблицы второй. Логичным решением было создать процедуру (во второй базе, так как в первой на создание объектов нет прав), в которой будет происходить работа с таблицами, причем к первой базе будет создаваться соединение по DATABASE LINK. Так как пользователей много, а их контексты разнятся, то правильнее будет создать каждому пользователю свой дблинк с его логином и паролем. Но если учесть, что несколько таких процедур может быть запущенно одновременно, а также неизвестно, сколько, когда и какие пользователи будут вызывать данную процедуру; появилась идея создавать DATABASE LINK прямо в теле процедуры, а в конце его дропать. Проблема: Кликните здесь для просмотра всего текста
Так как CREATE DATABASE LINK - DDL команда, то в процедуре ее необходимо выполнять через EXECUTE IMMEDIATE. Название дблинка также генерируется автоматически и хранится в varchar2 переменной. Как только я не пытался описать создание дблинка и его использование, все время получаю различные ошибки. Например, "неверное окончание SQL-предложения" в вызове EXECUTE IMMEDIATE create_text; где значение переменной create_text - текст создания дблинка. Если вывести текст создания через DBMS_OUTPUT, а после вручную запустить его, линк создается. В интернете наткнулся только на возможность подстановки линка из переменной в запрос на выборку данных. А вот как создать это соединение динамически, не нашел. Подскажите, пожалуйста, как можно решить данную проблему.
0
|
20.06.2017, 23:29 | |
Ответы с готовыми решениями:
1
Database Link link database in MS Access Database link: password are changed SQLite DataBase - почему подчеркивает DataBase db: пишет (DataBase cannot be resolved to a type) |
6 / 6 / 1
Регистрация: 28.07.2014
Сообщений: 49
|
|||||||||||
04.07.2017, 16:28 | 2 | ||||||||||
Попробуйте так :
SQL> create user test identified by test; User created. SQL> grant connect to test; Grant succeeded. SQL> grant create database link to test; Grant succeeded. SQL> connect test/test Connected.
SQL> connect / as sysdba Connected.
Код
OWNER DB_LINK USERNAME HOST CREATED --------------- -------------------- -------------------- -------------------- ------------------ TEST TESTDBLINK TEST INFORT01 04-JUL-17
1
|
04.07.2017, 16:28 | |
04.07.2017, 16:28 | |
Помогаю со студенческими работами здесь
2
Создание процесса загрузки в процедуре Создание Mail-in Database Создание окон в процедуре другого окна Создание БД в Delphi (DATABASE, PARADOX 7) Oracle Database : создание и хранение запросов Создание сервера на основе SQL server database file Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |