请看下面的存储过程 存储过程中不能有truncate等语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我 用delete from 也是同一个问题 分只给我一个人上面有同样问题的另开贴给我分,我急需分!问: 调用存储过程权限不足(存储过程中使用了dbms_sql),迷惑很久的问题 本人建立用户libuser,权限:CONNECT ,DBA,RESOURCE,UNLIMITED TABLESPACE并且用internal登陆为libuser赋对象权限:sys下的DBMS_SYS_SQL,DBMS_SQL建立存储过程MY_CRT_TABLE1如下:(功能:建表,表名由参数指定,字段为a,b) (tblname varchar2) is sqlstr varchar2(400); acur integer ; ignore integer; begin sqlstr := 'create table '||tblname||'(a varchar2(20),b varchar2(20))'; acur := dbms_sql.open_cursor; dbms_sql.parse(acur,sqlstr,dbms_sql.native); ignore := dbms_sql.execute(acur); dbms_sql.close_cursor(acur); end MY_CRT_TABLE1;sqlplus中以libuser登陆调用如下:exec my_crt_table1('kk');报错如下;*ERROR 位于第 1 行:ORA-01031: 权限不足ORA-06512: 在"SYS.DBMS_SYS_SQL", line 782ORA-06512: 在"SYS.DBMS_SQL", line 32ORA-06512: 在"LIBUSER.MY_CRT_TABLE1", line 10ORA-06512: 在line 1难道没人碰到过这样的问题吗?谢高手指点,迷惑很久了。 答:还需为libuser添加系统权限:create table,即要为动态sql中的命令赋相应的系统权限。加create table 权限,在用户里面加吧--------------------------------------------【ORACLE回复手册】.txt===============================================================此文章已经作为回复使用次数:==============================================================================================================================创建表空间,用户,赋权限问题此文章已经作为回复使用次数:1===============================================================connect system/manager@testdb1.创建表空间:create tablespace library datafile 'c:\oracle\oradata\test3\library.ora' size 10m;2.创建用户create user "LIBUSER" profile "DEFAULT" IDENTIFIED BY "yourpassword" default tablespace "LIBRARY" temporary tablespace "temp" account unlock ;3.赋权限:grant "CONNECT","DBA","RESOURCE",CREATE ANY TABLE ,UNLIMITED TABLESPACETO "LIBUSER"删权限revoke "CONNECT","DBA","RESOURCE",CREATE ANY TABLE ,UNLIMITED TABLESPACE from "LIBUSER" 用自定议函数给表列赋默认值的问题 rman的catalog tablespace删除了怎么办? oracle 数据库备份和还原(rman)方式 请问能不能用Select的方法调用Oracle储存过程的返回结果集函数 帮忙写2个正则表达式 还是临时表空间的问题? 数据库函数索引为什么不起作用(300万条记录) 触发器问题--100份哦 [求助]求电子书籍《Oracle 9i 初者者指南》的下载地址 请教小菜一碟 关于PL/SQL Developer的问题。 《Oracle9i实务管理讲座--系统核心篇》这本书大家觉得怎么样?
问: 调用存储过程权限不足(存储过程中使用了dbms_sql),迷惑很久的问题 本人建立用户libuser,权限:CONNECT ,DBA,RESOURCE,UNLIMITED TABLESPACE
并且用internal登陆为libuser赋对象权限:sys下的DBMS_SYS_SQL,DBMS_SQL
建立存储过程MY_CRT_TABLE1如下:
(功能:建表,表名由参数指定,字段为a,b) (tblname varchar2)
is
sqlstr varchar2(400);
acur integer ;
ignore integer;
begin
sqlstr := 'create table '||tblname||'(a varchar2(20),b varchar2(20))';
acur := dbms_sql.open_cursor;
dbms_sql.parse(acur,sqlstr,dbms_sql.native);
ignore := dbms_sql.execute(acur);
dbms_sql.close_cursor(acur);
end MY_CRT_TABLE1;sqlplus中以libuser登陆调用如下:exec my_crt_table1('kk');报错如下;
*
ERROR 位于第 1 行:
ORA-01031: 权限不足
ORA-06512: 在"SYS.DBMS_SYS_SQL", line 782
ORA-06512: 在"SYS.DBMS_SQL", line 32
ORA-06512: 在"LIBUSER.MY_CRT_TABLE1", line 10
ORA-06512: 在line 1
难道没人碰到过这样的问题吗?谢高手指点,迷惑很久了。
答:还需为libuser添加系统权限:create table,即要为动态sql中的命令赋相应的系统权限。
加create table 权限,在用户里面加吧--------------------------------------------
【ORACLE回复手册】.txt
===============================================================
此文章已经作为回复使用次数:
==============================================================================================================================
创建表空间,用户,赋权限问题
此文章已经作为回复使用次数:1
===============================================================
connect system/manager@testdb
1.创建表空间:
create tablespace library
datafile 'c:\oracle\oradata\test3\library.ora' size 10m;2.创建用户
create user "LIBUSER" profile "DEFAULT" IDENTIFIED BY "yourpassword"
default tablespace "LIBRARY"
temporary tablespace "temp"
account unlock ;3.赋权限:
grant "CONNECT","DBA","RESOURCE",CREATE ANY TABLE ,UNLIMITED TABLESPACE
TO "LIBUSER"删权限
revoke "CONNECT","DBA","RESOURCE",CREATE ANY TABLE ,UNLIMITED TABLESPACE from "LIBUSER"