ora-01031:权限不足 求解释

software攻城师 2013-05-14 04:01:08
select p.id as projectID,to_char(WMSYS.WM_CONCAT(u.username)) as managerNames
from bizproject p,sysuser u
where ',' || p.managers || ',' like '%,' || u.id || ',%'
group by p.id;

这个语句正常执行 WMSYS.WM_CONCAT 正常调用
但把查询结果创建视图时 会报 ora-01031:权限不足 错误

还有就是我存储过程中使用到WM_CONCAT的也同样出现一样的错误 求大牛来看看

...全文
3309 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sych888 2013-05-15
SQL> create view my_view as select id,wm_concat(nn) tt from test group by id; create view my_view as select id,wm_concat(nn) tt from test group by id * 第 1 行出现错误: ORA-01031: 权限不足 SQL> conn /as sysdba 已连接。 SQL> grant create any view to u2; 授权成功。 SQL> conn u2/u2 已连接。 SQL> create view my_view as select id,wmsys.wm_concat(nn) tt from test group by id; 视图已创建。 SQL> select * from my_view; ID ---------- TT ------------------------------------------------------------------------------------ 1 aa,bb
回复
create or replace TYPE zh_concat_im AUTHID CURRENT_USER AS OBJECT ( CURR_STR clob, STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im, P1 IN VARCHAR2) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER, MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im, SCTX2 IN zh_concat_im) RETURN NUMBER ); / create or replace TYPE BODY zh_concat_im IS STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT zh_concat_im) RETURN NUMBER IS BEGIN SCTX := zh_concat_im(NULL) ; RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT zh_concat_im, P1 IN VARCHAR2) RETURN NUMBER IS BEGIN IF(CURR_STR IS NOT NULL) THEN CURR_STR := CURR_STR || ',' || P1; ELSE CURR_STR := P1; END IF; RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN zh_concat_im, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBER) RETURN NUMBER IS BEGIN RETURNVALUE := CURR_STR ; RETURN ODCICONST.SUCCESS; END; MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT zh_concat_im, SCTX2 IN zh_concat_im) RETURN NUMBER IS BEGIN IF(SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF; RETURN ODCICONST.SUCCESS; END; END; / 函数: create or replace FUNCTION zh_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE USING zh_concat_im ;
回复
引用 7 楼 jdsnhan 的回复:
SQL> create user t identified by t ;

用户已创建。

SQL> grant connect,resource ,unlimited tablespace to t;

授权成功。

SQL> conn t/t@testdb
已连接。
SQL> create table a(id varchar2(2));

表已创建。

SQL> insert into a values('1');

已创建 1 行。

SQL> insert into a values('2');

已创建 1 行。

SQL> insert into a values('3');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select wmsys.wm_concat(id)  from a;

WMSYS.WM_CONCAT(ID)
--------------------------------------------------------------------------------

1,2,3

SQL> create or replace view va as select wmsys.wm_concat(id) cola from a;
create or replace view va as select wmsys.wm_concat(id) cola from a
                       *
第 1 行出现错误:
ORA-01031: 权限不足


SQL> conn / as sysdba
已连接。

SQL> grant create any view to t;

授权成功。

SQL> conn t/t@testdb
已连接。
SQL> create or replace view va as select wmsys.wm_concat(id) cola from a;

视图已创建。

SQL>
谢谢大家了 由于没有DBA账户权限 果断想了另外一个办法 自定义了wmsys.wm_concat 下楼帖上
回复
vanjayhsu 2013-05-15
最好把你创建视图的语句贴出来。。。
回复
jdsnhan 2013-05-15
SQL> create user t identified by t ;

用户已创建。

SQL> grant connect,resource ,unlimited tablespace to t;

授权成功。

SQL> conn t/t@testdb
已连接。
SQL> create table a(id varchar2(2));

表已创建。

SQL> insert into a values('1');

已创建 1 行。

SQL> insert into a values('2');

已创建 1 行。

SQL> insert into a values('3');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select wmsys.wm_concat(id)  from a;

WMSYS.WM_CONCAT(ID)
--------------------------------------------------------------------------------

1,2,3

SQL> create or replace view va as select wmsys.wm_concat(id) cola from a;
create or replace view va as select wmsys.wm_concat(id) cola from a
                       *
第 1 行出现错误:
ORA-01031: 权限不足


SQL> conn / as sysdba
已连接。

SQL> grant create any view to t;

授权成功。

SQL> conn t/t@testdb
已连接。
SQL> create or replace view va as select wmsys.wm_concat(id) cola from a;

视图已创建。

SQL>
回复
每个用户有很多角色登陆,查看你登录时的角色是DBA还是Normal
回复
linwaterbin 2013-05-14
引用 4 楼 dcf_zyt 的回复:
搞半天推测 应该是wmsys这个用户的权限问题 具体怎么回事始终不得其解啊 真心求助
bizproject p,sysuser u 这两张表有一张不是 wmsys这个用户的吧? 如果是这样、把不是 wmsys这个用户的那张表的select权限授给他就是了
回复
搞半天推测 应该是wmsys这个用户的权限问题 具体怎么回事始终不得其解啊 真心求助
回复
引用 2 楼 zayx88 的回复:
授DBA权限!CREATE VIEW
赋予权限这些 都搞过了 没有一点反应 谢谢你
回复
zayx88 2013-05-14
授DBA权限!CREATE VIEW
回复
百度都翻遍了 果断还是找不到解决办法呀 大牛在哪里
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-05-14 04:01
社区公告
暂无公告