写的过程如下:
create or replace procedure createAview is
sql_str varchar(500);
view_name varchar(100);
begin
select user into view_name from dual;
sql_str:='create view '||view_name||' as (select id from cxb24data)';
execute immediate sql_str;
end createAview;
然后,如下出现权限不够的提示:
SQL> execute createAview();
begin createAview(); end;
ORA-01031: insufficient privileges
ORA-06512: at "SYSTEM.CREATEAVIEW", line 7
ORA-06512: at line 2
SQL> 我想通过上面的一个过程,创建一个和当前登录用户名相同的视图,好进行某些操作,但不成功,这是为什么?我直接打入create view ...能创建成功,为什么放在过程中,动态生成就不行,有解决办法吗?急急
create or replace procedure createAview is
sql_str varchar(500);
view_name varchar(100);
begin
select user into view_name from dual;
sql_str:='create view '||view_name||' as (select id from cxb24data)';
execute immediate sql_str;
end createAview;
然后,如下出现权限不够的提示:
SQL> execute createAview();
begin createAview(); end;
ORA-01031: insufficient privileges
ORA-06512: at "SYSTEM.CREATEAVIEW", line 7
ORA-06512: at line 2
SQL> 我想通过上面的一个过程,创建一个和当前登录用户名相同的视图,好进行某些操作,但不成功,这是为什么?我直接打入create view ...能创建成功,为什么放在过程中,动态生成就不行,有解决办法吗?急急
pl/sql和普通sql中的权限是有区别的即使是DBA也需要明确的grant语句
类似地我view_name='aitk'的情况下:ORA-00904: "AITK": invalid identifier
ORA-06512: at "SYSTEM.ADD_NEW_USER", line 18
ORA-06512: at line 2建视图的时候说的,这又是怎么回事呢?
楼主确定这是创建View的时候发生的错误吗?
这不是说在创建用户的时候发生了错误吗?
上面报的是第18行错误,但是搂住只提供了8行代码地说!
这些单引号要算清楚,另外我后来查找当前用户时select username into XXXX from dual,那个XXXX是大写,在进行一一些字符串比较时要记得转化,特此总结,谢谢大家,这些天学了很多