Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Вниз

Вопрос к знатокам динамического SQL   Найти похожие ветки 

 
ilandrei   (2003-03-18 15:14) [0]

Народ, помогите разобраться!
Есть у меня вот такая процедура

create or replace procedure SQLCursor(curss out TypeDef.c_type, vSQL Varchar2) is
begin
OPEN curss FOR vSQL;
end;

Задача этой процедуры - вернуть ссылку на курсор.
Так вот, если я в качестве параметра передаю запрос, в котором участвуют таблицы моей схемы, то все ОК, если же в запрос входит таблица чужой схемы, то, несмотря на наличие синонима и прав доступа, процедура генерит ошибку ORA-00942 (Table or view doesn"t exist)
Тот же самый запрос в статическом SQL выполняется нормально.
Может быть, кто-то знает, где тут собака порылась?


 
Val   (2003-03-18 15:22) [1]

а если напрямую указывать имя_схемы.имя_таблицы?


 
ilandrei   (2003-03-18 15:30) [2]

Не помогает!


 
Val   (2003-03-18 15:45) [3]

хм. может быть ругань идет на vSQL? именно vSQL воспринимается как таблица или view?может использовать следующую конструкцию?
execute immediate "OPEN curss FOR "||vSQL;


 
ilandrei   (2003-03-18 15:52) [4]

To Val:

Да нет, если бы ругань была из-за переменной, то она бы не зависела от ее содержимого.
Я попробовал так, как Вы предлагаете, и вот теперь-то ругань идет как раз независимо от параметров: invalid SQL statement



 
Val   (2003-03-18 17:07) [5]

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


 
ilandrei   (2003-03-18 18:45) [6]

Отвечаю себе сам :)
Для того, чтобы это работало, нужно, чтобы GRANT на SELECT был передан непосредственно, а не через роль. Полдня угробил, пока разобрался...


 
ilandrei   (2003-03-18 18:53) [7]

Вдогонку - если кому-то еще будет интересна эта тема.
Чтобы не грантовать отдельно каждую таблицу, сойдет команда grant all privileges to <имя пользователя>. Еще один вариант - можно поместить процедуру, открывающую этот проблемный курсор, в схему SYS. Так тоже работает - проверено!


 
Val   (2003-03-18 18:57) [8]

:) рад за вас, согласитесь, фраза несмотря на наличие синонима и прав доступа об этом не упоминает :)


 
Val   (2003-03-18 19:56) [9]

>ilandrei © (18.03.03 18:53)
сойдет команда grant all privileges...
но, не будет ли это разрушением схемы безопасности?


 
ilandrei   (2003-03-18 20:24) [10]

To Val:
> :) рад за вас, согласитесь, фраза несмотря на наличие синонима и прав доступа об этом не упоминает :)

Нет, не упоминает. Поскольку все необходимые права доступа были изначально переданы через роль - для статического SQL и PL/SQL достаточно, а вот для динамического, как выяснилось, нет!
А про схему безопасности - тут уж каждый для себя волен решать, что ему подходит, что нет - я лишь поспешил поделиться с публикой найденным решением собственной проблемы :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
14-19863
REA
2003-03-21 15:30
2003.04.07
Оптимизатор и векторизатор


14-19853
Val
2003-03-21 10:04
2003.04.07
Скажи спасибо армии США!


4-19920
xZero
2003-02-09 00:15
2003.04.07
PE


6-19731
Stan
2003-02-08 13:19
2003.04.07
Соединение по номеру телефона


7-19900
Andrew1
2003-02-14 11:05
2003.04.07
Работа с LPT





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский