授予创建 table INSIDE oracle sql 过程的权限

Grant privilege to create table INSIDE oracle sql procedure

我正在尝试在 oracle 的过程中创建一个 table。但我不断得到 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;
  /

有什么帮助吗?谢谢。

如果用户(执行该脚本)通过角色获得 CREATE TABLE 权限,则它可以创建表。但是,这些权限在命名的 PL/SQL 过程中不起作用 - 您必须将该权限 直接 授予用户(即不通过角色)。

谢谢大家的回答。我通过简单地将 AUTHID CURRENT_USER 添加到 proc 声明来解决问题。再次感谢。