执行某个存储过程时报错:ORA-01031: insufficient privileges。 调试存储过程,发现在存储过程运行到创建表的这一步时出错,意即没有权限创建表,但实际上执行这个存储过程的用户是有创建表的权限的,在网上查找同样的错误信息,发现基本上都是登陆数据库的时候报这个错误,并没有执行存储过程中报这个错误的案例。 请教同事...
1. 执行DDL报错 在oracle存储过程中,默认是可以直接执行DML和DQL的,但是执行CREATE这种的DDL则需要借助EXECUTE IMMEDIATE ···了,如下备份表语句 --抄表表备份SELECTTO_CHAR(SYSDATE,'YYMMDD')INTOV_DQRQFROMDUAL; V_CREATESQL :='CREATE TABLE SF_EBZCB'||V_DQRQ||'_T AS SELECT * FROM SF_EBZCB_T...
1、ORACLE默认为定义者权限,定义者权限在存储过程中ROLE⽆效,需要显⽰授权。2、如果使⽤AUTHID CURRENT_USER关键字使⽤调⽤者权限,则编译时ROLE⽆效,运⾏时有效。解决办法:⽅法1:就这个存储过程来说,CREATE TABLE想使⽤CREATE ANY TABLE权限,⽽CREATE ANY TABLE权限来⾃DBA⾓⾊,默认...
执行存储过程报错——ora-01031:权限不足 执⾏存储过程报错——ora-01031:权限不⾜ 1. 执⾏DDL报错 在oracle存储过程中,默认是可以直接执⾏DML和DQL的,但是执⾏CREATE这种的DDL则需要借助EXECUTE IMMEDIATE ···了,如下备份表语句 --抄表表备份 SELECT TO_CHAR(SYSDATE,'YYMMDD') INTO V_DQRQ ...
我用scott用户创建了一个存储过程,创建成功后我调用改存储过程,就提示我权限不足,是怎么回事锕 ,有谁帮解决一下下锕我的存储过程如下:create or replace procedure xu_create isv_a varchar2(20):='&输入表名称';v_b varchar2(20):='&输入表的字段';...
当执行该语句时,提示ORA-01031: 权限不足。该用户已赋予DBA权限。 原因:CREATE TABLE想使用CREATE ANY TABLE权限,而CREATE ANY TABLE权限来自DBA角色,默认情况下,虽然在会话环境中可见,但在存储过程中不可见(无效)。 即:ORACLE默认为定义者权限,定义者权限在存储过程中ROLE无效,需要显式授权。
(另外我感觉应该不需要给scott 授权的阿,默认scott 用户就应该可以创建表的啊) end 对,就是啊, GRANT CREAT E ANY sequence TO scotti 这句话是在别的地方copy过来的看都没 有看不过我还不明白为啥scotti 还用授权呢,我们 即使不授权照样可以在scott 用户下创建表啊为啥 一旦用到存储过程中去的时候就得要...
存储过程代码如下: CREATE OR REPLACE PROCEDURE sp_test IS v_sql VARCHAR2(500); ---备份表 v_sql := 'create table t_test as select * from user_tables' ; EXECUTE IMMEDIATE v_sql; --清空 END; 1. 2. 3. 4. 5. 6. 7. 但是sql...
以下存储过程编译正常,其中的SQL语句在PLSQL执行也正常,但是在存储过程中执行即报告错误:ORA-01031: insufficient privileges。 create or replace procedure DBA_REBUILD_INDEX As Begin execute immediate 'alter index PK_DUBAI_STORAGE_OUT_MANIFEST rebuild online'; ...
执行某个存储过程时报错:ORA-01031: insufficient privileges。 调试存储过程,发现在存储过程运行到创建表的这一步时出错,意即没有权限创建表,但实际上执行这个存储过程的用户是有创建表的权限的,在网上得到解决方法,在存储过程中添加如下内容即可:Authid Current_User,修改后的存储过程结构如下: ...