授予创建 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 声明来解决问题。再次感谢。
我正在尝试在 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 声明来解决问题。再次感谢。