Относительно Execute Immediate в хранимой процедуре - PullRequest
2 голосов
/ 02 марта 2010

У меня нижеприведенное утверждение из хранимой процедуры. Это дает недостаточные привилегии. Но если я запускаю инструкцию create только из командной строки sql, это создает таблицу.

    execute immediate 'create table TEST_ABC(
                    NO_AC NUMBER(8) 
                    , ILL_PER VARCHAR2(15)
                    , INIT_C DATE
                    )';

Что нужно сделать, чтобы иметь права на создание таблицы с помощью функции «Выполнить немедленно из хранимой процедуры». Не уверен, как это работает из командной строки sql

Ответы [ 2 ]

3 голосов
/ 02 марта 2010

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

Одним из способов решения этой проблемы является предоставление привилегии «CREATE TABLE» непосредственно учетной записи, которой принадлежит процедура.

0 голосов
/ 02 марта 2010

Процедура создана одним и тем же пользователем? Если он создан кем-то другим, и у вас есть только привилегия EXECUTE, то ошибка верна (при условии, что процедура создания не имеет AUTHID CURRENT USER предложения).

Можете ли вы создать любую другую таблицу? Если вы можете, то есть проблема. Нам нужно больше деталей для анализа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...