Предоставьте привилегию для создания таблицы INSIDE oracle sql. - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь создать таблицу внутри процедуры на оракуле.Но я продолжаю получать ORA-01031: недостаточно привилегий.Я подумал, что, возможно, мой пользователь нуждается в привилегии для этого?

Вот код процедуры:

CREATE OR REPLACE PROCEDURE AjouterCol(TAB VARCHAR2, NOM VARCHAR2) IS 
REQ VARCHAR2(200);
RES VARCHAR2(200);
RES1 VARCHAR2(200);
NAME VARCHAR2(200);
BEGIN
  NAME:=TAB || '_' || NOM;

  RES:='CREATE TABLE '||NAME||' AS SELECT * FROM '|| TAB || ' WHERE Col9 = ''PARIS'' AND SOUNDEX(Col9) = SOUNDEX(''PARIS'')' ;
  EXECUTE IMMEDIATE RES;

  RES1:='ALTER TABLE '|| NAME ||' ADD MAGASIN VARCHAR2(5)';
  EXECUTE IMMEDIATE RES1;

  REQ:='UPDATE '|| NAME ||' SET MAGASIN = '''|| NOM ||''' WHERE MAGASIN IS NULL' ;
  EXECUTE IMMEDIATE REQ;

  END;
  /

Любая помощь, пожалуйста?Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Так что спасибо всем за ваши ответы.Я решил проблему, просто добавив AUTHID CURRENT_USER в декларацию proc.Еще раз спасибо.

0 голосов
/ 03 декабря 2018

Если пользователь (который выполняет этот скрипт) приобрел привилегию CREATE TABLE через роль, он может создавать таблицы.Однако эти привилегии не будут работать в именованных процедурах PL / SQL - вам придется предоставить эту привилегию непосредственно пользователю (т. Е. Не через роль).

...