|
Получение результата запроса на другой схеме
|
|||
---|---|---|---|
#18+
Владелец приложения - APP_SCHEMA Задача: Получить результат запроса(запрос это текст из поля TEXT) на схеме APP_SCHEMA_PUBLIC (в ней содержатся нужные таблицы для запроса). В запросах не указывается схема. Использую Report для вывода результата запроса, который использует PL/SQL функцию, возвращающую SQL запрос. DECLARE sel VARCHAR2(2000); BEGIN SELECT NVL(:TEXT,'SELECT 1 FROM DUAL') INTO sel FROM DUAL; EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = APP_SCHEMA_PUBLIC'; RETURN sel; END; Но запрос выполняется на данных схемы APP_SCHEMA, а надо на APP_SCHEMA_PUBLIC. Как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2011, 00:34 |
|
Получение результата запроса на другой схеме
|
|||
---|---|---|---|
#18+
Верней, текущую схему изменить получается (это показывает представление v$session). А запрос выполняется на схеме владельца приложения (на APP_SCHEMA). Куда 'копать'? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2011, 16:45 |
|
Получение результата запроса на другой схеме
|
|||
---|---|---|---|
#18+
Немного не понял, зачем это делается? Чтобы динамически подставлять нужную схему? Можно строить отчеты на основе dynamic sql, или указывать имя схемы в запросах. Может я чего-то не догоняю, но вероятная причина: дело в том что есть разница между сессиями oracle и сессией apex. Под сессией apex в течение запросов пользователей создаются различные сессии oracle, тем самым, например, все переменные пакетов сбрасываются, и это будет работать гарантированно только в одном блоке pl/sql кода. Можно попробовать прописать как-нибудь этот код, чтобы он выполнялся для каждой сессии oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 11:00 |
|
Получение результата запроса на другой схеме
|
|||
---|---|---|---|
#18+
SvUser, SvUserНемного не понял, зачем это делается? Чтобы динамически подставлять нужную схему? Можно строить отчеты на основе dynamic sql Хочется как на SQL-ex.ru вводится запрос (с неизвестным заранее количеством и названий столбцов, таблиц) в текстовое поле и выдается результат. Схема к которой надо выполнять запросы одна и известна - APP_SCHEMA_PUBLIC. Есть Report, строящий отчет на основе запроса который вернет pl/sql блок. Как раз то что надо, но он выполняет запрос на схеме владельца приложения(*), даже если в сессия oracle указана другая текущая схема. SvUser или указывать имя схемы в запросах. Если это к запросам которые пишутся в поле TEXT, то от этого как раз и хочется уйти. SvUserМожет я чего-то не догоняю, но вероятная причина: дело в том что есть разница между сессиями oracle и сессией apex. Видимо. "Если гора не идет к Магомеду, то Магомед идет к горе" , (*) Перестрою приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 17:02 |
|
|
start [/forum/topic.php?fid=50&fpage=70&tid=1876529]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 284ms |
total: | 410ms |
0 / 0 |