我正在尝试在oracle上的过程内创建表。但我不断 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;
/
有什么需要帮助的吗?谢谢。
答案 0 :(得分:1)
如果用户(执行该脚本)通过角色获得了CREATE TABLE
特权,则可以创建表。但是,这些特权在命名的PL / SQL过程中不起作用-您必须直接将特权授予用户(即不通过角色)。
答案 1 :(得分:0)
因此,谢谢大家的回答。通过将AUTHID CURRENT_USER添加到proc声明中,我解决了该问题。再次谢谢你。