И вновь Direct SQL

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

И вновь Direct SQL

Сообщение m0p3e »

Необходимо обратиться из интерфейса к данным во View (представлении). СУБД Oracle.
Как и следовало ожидать из вьюхи созданной вручную данные тягать категорически отказывается.
В результате поисков была обнаружена конструкция:

Код: Выделить всё

Оператор CREATE VIEW    
Данный оператор создает представление таблицы (виртуальную таблицу).
<create-view-statement> = CREATE VIEW <view-name>
  [ (<список-столбцов>) ] AS <оператор-direct-select>
<view-name> - имя представления.
<список-столбцов> - список столбцов из выборки, которые войдут в представление.
<оператор-direct-select> - оператор выборки, см. "Оператор выборки данных SELECT. ".
В качестве теста взял простейщую конструкцию:

Код: Выделить всё

 SQL Create View vPers(FIO) AS SELECT PERSONS.FFIO FROM PERSONS;
Однако: при попытке выполнить ее из интерфейса получаем:
Ошибка компиляции SQL запроса Direct SQL. Подробности содержатся в лог-файле.
В ora90dll.log:

Код: Выделить всё

16.12.2010 09:15:47 [ADMIN]:
CREATE VIEW GAL."S$VPERS" ( FIO ) AS SELECT PERSONS.FFIO FROM PERSONS 
16.12.2010 09:15:47 [ADMIN]:
Ошибка(1,15): Ожидалось : "AS" 
Пробовал выполнять и сапортом/VIP-ом. Успешно падают с сообщением:

Код: Выделить всё

Runtime error 216 (rtl:попытка обращения к некорректному дескриптору)
in base.dll at 000XXXXX
Так как же пользоваться сей замечательной конструкцией?
Если у нее ошибка в генах, то может кто подскажет как проэмулировать ее работу вручную? Создать представление S$VPERS в БД можно, но подозреваю что запись определенного вида должна упасть в x$resources для выставления прав в на доступ к View в протекте. Какого вида она должна быть?
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: И вновь Direct SQL

Сообщение cruger »

То, для чего просили сделать эту конструкцию, по разным причинам использовать с ней оказалось не возможно. В итоге она не используется, а в коде осталась недоделанная реализация.
В общем - пока надо о ней забыть.
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: И вновь Direct SQL

Сообщение m0p3e »

Т.е. произвольную вьюшку прочитать через DSQL не получится?
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: И вновь Direct SQL

Сообщение cruger »

Как вопрос
Так как же пользоваться сей замечательной конструкцией?
привёл к уточнению
Т.е. произвольную вьюшку прочитать через DSQL не получится?
? Это ж совершенно разные вопросы.
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: И вновь Direct SQL

Сообщение m0p3e »

Собственно сам вопрос начинается так:
Необходимо обратиться из интерфейса к данным во View (представлении). СУБД Oracle.
Вопрос один и тот же. Конструкция SQL Create View, судя по скудному описанию задачу должна была решить, но...
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: И вновь Direct SQL

Сообщение cruger »

Нет, это разные вопросы.
Объекты, не описанные через DSQL через DSQL использовать нельзя и не будет можно по требованиям безопасности.
А вот create view когда-то будет доработана.
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: И вновь Direct SQL

Сообщение m0p3e »

cruger писал(а):Нет, это разные вопросы.
Если мы начали придираться к словам, то мне непонятно откуда взялся такой ответ?
Объекты, не описанные через DSQL через DSQL использовать нельзя и не будет можно по требованиям безопасности.
Я не спрашивал как мне использовать объект не описанный через DSQL. Я спрашивал как его описать и использовать.

Тем более, что в MSSQL моя задача решает очень даже легко. (описывать как не буду дабы не прикрыли) проблема именно в оракле.
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: И вновь Direct SQL

Сообщение cruger »

Ответ
Объекты, не описанные через DSQL через DSQL использовать нельзя и не будет можно по требованиям безопасности.
взялся из вопроса
Т.е. произвольную вьюшку прочитать через DSQL не получится?
Для конструктивного диалога прошу сообщить про MS SQL. Если там есть дыра в безопасности - её необходимо прикрыть.
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: И вновь Direct SQL

Сообщение m0p3e »

Для конструктивного диалога прошу сообщить про MS SQL. Если там есть дыра в безопасности - её необходимо прикрыть.
Итак несчастные программеры сидят и выискивают обходные пути для решения тривиальных задач, так будем еще и найденные решения отсекать!
Прежде чем что-то отрубать, из любых соображений, нужно предоставить альтернативу.

Если кому интересно, то для оракла задача решается путем использования хранимки (создаем пустую через asql и редактируем средствами оракла):

Код: Выделить всё

CREATE PROCEDURE GAL."S$GATE"  ( S IN VARCHAR2 ) AS 
BEGIN  
 EXECUTE IMMEDIATE S;
 COMMIT;
END;
и использования временной таблицы (sqlCreateTmpTable()).
"Скармливаем" хранимке текст запроса, который берет данные где нам нужно и переливает в ТП. Через одно место, но работает.
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Re: И вновь Direct SQL

Сообщение cruger »

m0p3e писал(а):
Для конструктивного диалога прошу сообщить про MS SQL. Если там есть дыра в безопасности - её необходимо прикрыть.
Итак несчастные программеры сидят и выискивают обходные пути для решения тривиальных задач, так будем еще и найденные решения отсекать!
Прежде чем что-то отрубать, из любых соображений, нужно предоставить альтернативу.
В общем, не желаете конструктивно взаимодействовать.
Очень жаль.
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: И вновь Direct SQL

Сообщение m0p3e »

cruger писал(а):
m0p3e писал(а):
Для конструктивного диалога прошу сообщить про MS SQL. Если там есть дыра в безопасности - её необходимо прикрыть.
Итак несчастные программеры сидят и выискивают обходные пути для решения тривиальных задач, так будем еще и найденные решения отсекать!
Прежде чем что-то отрубать, из любых соображений, нужно предоставить альтернативу.
В общем, не желаете конструктивно взаимодействовать.
Очень жаль.
Федор! Мне кажется это укор не по адресу!
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: И вновь Direct SQL

Сообщение m0p3e »

Используя данный способ также удалось прочитать данные с линкованного сервера.
masygreen
партнер
Сообщения: 112
Зарегистрирован: Чт, 20/03/2008 09:10
Имя Фамилия: Максим Черепанов
Откуда: IT
Контактная информация:

Re: И вновь Direct SQL

Сообщение masygreen »

прийдется афону вернуть :)
m0p3e
заказчик
Сообщения: 46
Зарегистрирован: Вт, 13/01/2009 10:52
Имя Фамилия: Сергей Головчак
Откуда: Гипротрубопровод

Re: И вновь Direct SQL

Сообщение m0p3e »

masygreen писал(а):прийдется афону вернуть :)
Что б что-то вернуть, надо сначала что-то получить... :)
Seybukan
партнер
Сообщения: 85
Зарегистрирован: Чт, 20/09/2007 12:53
Имя Фамилия: Алексей Семенов
Откуда: ЭП-Аудит
Контактная информация:

Re: И вновь Direct SQL

Сообщение Seybukan »

В общем, не желаете конструктивно взаимодействовать.
...потому и не дают. :)
Ответить