我按书上创建了这样一个存储过程
CREATE PROCEDURE EXEC_DDL(DDL_STRING IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE DDL_STRING;
END EXEC_DDL;
后面我执行存储过程报错
BEGIN
EXEC_DDL('CREATE TABLE DD(ID INT,FNAME VARCHAR2(100))');
END;
说我权限不足,
查看什么乱七八糟的堆栈说是这句
EXECUTE IMMEDIATE DDL_STRING;
说明下,我登陆的用户是DBA权限。求指教
------最佳解决方案--------------------
可能需要显式授权,
sys用户登陆,
然后
grant create table to username;
------其他解决方案--------------------
加上这个就好了authid current_user
CREATE OR REPLACE PROCEDURE EXEC_DDL(DDL_STRING IN VARCHAR2) authid current_user
IS
BEGIN
EXECUTE IMMEDIATE DDL_STRING;
END EXEC_DDL;
------其他解决方案--------------------
你这个dba用户是在哪个表空间上建的?
------其他解决方案--------------------
/*第1步:创建临时表空间 */
create temporary tablespace user_temp
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第2步:创建数据表空间 */
create tablespace DC_KTR
datafile 'E:\oracle\product\10.2.0\oradata\orcl\dc_ktr.dbf'
size 5000m
autoextend on
next 50m maxsize 20480m
extent management local;
/*第3步:创建用户并指定表空间 */
create user username identified by password
default tablespace user_data
temporary tablespace user_temp;
/*第4步:给用户授予权限 */
grant connect,resource,dba to username;
按这个过程创建的