在存储过程中的所有操作都必须直接显式授权,不能通过角色授权。你必须把 CREATE TABLE 权限显式授予创建 plsql 的这个用户。
解决方案 »
- 虚拟机安装RAC,网卡可以用NAT方式连接吗?
- 如何根据SQL_ID获取该SQL语句执行时间信息呢?
- 求助一个小测试软件在没装ORACLE的机器上连接不上啊。
- 想了解下oracle个人版
- Processes到底能调多大
- 小弟执行下面语句报错ora-00900无效语句:imp rpsddbauser/rinpaksd2008@rpsdpos Full=y Ignore=y File='d:\bg2008-11-07.DMP',请帮忙
- 帮忙看看这个存储过程是什么错误
- delphi 调用存储过程!!!急!!!
- 我想在Oracle查找擅自修改数据内容,该怎么办?
- 请教前辈们!数据库学习的启蒙(100)!
- 多表联合统计,如何写SQL语句使其效率最高.
- 请教sql语句
EXECUTE immediate v_sql 提示权限不足
应该怎么修改,或怎么设置
比如存储过程:sSQL:='CREATE TABLE (name varchar2(4000))';
EXECUTE IMMEDIATE sSQL;--提示没权限
应该怎么修改.
jame说的就是:
1)就是sqlplus进去后,给你用作创建表这个用户赋权,使他有创建表的权限,那么在存储过程里就可以直接创建表了,带*的那个老大说的也是这个意思2)就是使用oracle'本身的创建临时表的功能,没有必要在存储过程里创建
嘿嘿,也不知道偶解释的对不对。
如果要用游标访问这个临时表结果提示表不存在
create or replace procedure .....
as
CURSOR curRole IS
SELECT * FROM tt_TMP; ---提示表tt_TMP不存在
begin
sSQL:='CREATE TABLE (tt_TMP varchar2(4000))';
EXECUTE IMMEDIATE sSQL;
end;
这个该怎么解决
create or replace procedure .....这个过程又是哪个用户所有?
col type,
....
)
on commit preserve rows | delete rows可以在存储过程中使用这个临时表, 表的结构是persistent的.. 里面的数据根据on commit后面的结果决定是session级别/事务级别..
如果是写存储过程,在cursor里用到了一个没有的表或者所属不对的表是编译不过去的
就是说这个过程处于不可用状态。