K
kylix2008
Unregistered / Unconfirmed
GUEST, unregistred user!
本人在oracle 9i中以SYSTEM用户名进入SQLPLUS后,先创建一个能执行动态SQL DDL语句的存储过程EXECDDLSQL,然后执行此存储过程,试图创建一个表DM_SWJG,但SQLPLUS提示“权限不足”,我用的可是具有DBA权限的SYSTEM用户啊。
请问各位高手,该如何解决权限不足的问题?
以下为操作过程:
--利用DBMS_SQL包编写的在PL/SQL程序中执行动态DDL语句的存储过程。
SQL> CREATE OR REPLACE PROCEDURE EXECDDLSQL(str IN VARCHAR2) AS cid INTEGER;
2 bEGIN
3 cid:=DBMS_SQL.OPEN_CURSOR;
4 DBMS_SQL.PARSE(cid,str,DBMS_SQL.NATIVE);
5 DBMS_SQL.CLOSE_CURSOR(cid);
6 END;
7
8 /
过程已创建。
SQL> EXECUTE EXECDDLSQL('CREATE TABLE DM_SWJG(SWJG_DM VARCHAR2(20),SWJG_MC VARCHAR2(20))');
BEGIN EXECDDLSQL('CREATE TABLE DM_SWJG(SWJG_DM VARCHAR2(20),SWJG_MC VARCHAR2(20))'); END;
*
ERROR 位于第 1 行:
ORA-01031: 权限不足
ORA-06512: 在"SYS.DBMS_SYS_SQL", line 826
ORA-06512: 在"SYS.DBMS_SQL", line 32
ORA-06512: 在"SYSTEM.EXECDDLSQL", line 4
ORA-06512: 在line 1
请问各位高手,该如何解决权限不足的问题?
以下为操作过程:
--利用DBMS_SQL包编写的在PL/SQL程序中执行动态DDL语句的存储过程。
SQL> CREATE OR REPLACE PROCEDURE EXECDDLSQL(str IN VARCHAR2) AS cid INTEGER;
2 bEGIN
3 cid:=DBMS_SQL.OPEN_CURSOR;
4 DBMS_SQL.PARSE(cid,str,DBMS_SQL.NATIVE);
5 DBMS_SQL.CLOSE_CURSOR(cid);
6 END;
7
8 /
过程已创建。
SQL> EXECUTE EXECDDLSQL('CREATE TABLE DM_SWJG(SWJG_DM VARCHAR2(20),SWJG_MC VARCHAR2(20))');
BEGIN EXECDDLSQL('CREATE TABLE DM_SWJG(SWJG_DM VARCHAR2(20),SWJG_MC VARCHAR2(20))'); END;
*
ERROR 位于第 1 行:
ORA-01031: 权限不足
ORA-06512: 在"SYS.DBMS_SYS_SQL", line 826
ORA-06512: 在"SYS.DBMS_SQL", line 32
ORA-06512: 在"SYSTEM.EXECDDLSQL", line 4
ORA-06512: 在line 1