Oracle使用模式名称关联查询

时间:2016-11-16 11:32:09

标签: sql oracle correlated-subquery

考虑以下相关查询:

update CASSETTE.DB_NIM_CABLES a
set( cgb_a, cgb_z ) =
(
    select  regexp_substr( name, '[^ ]+', 1, 1 )
        ,   regexp_substr( name, '[^ ]+', 1, 1 )
    from CASSETTE.DB_NIM_CABLES b 
    where b.id = a.id
) where REGEXP_COUNT( a.name, '-' ) = 1;

如果我使用CASSSETTE帐户运行它,但不能与其他任何帐户一起运行。这是为什么?

2 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为您想要运行DML的其他用户(帐户)可能不具有该表的UPDATE和SELECT权限。 因此,CASSETTE用户应该向相应的用户授予权限。

I.E。,说你要从OTHERUSER架构运行它,你应该

1-使用CASSETTE USER连接到DB

2-给予如下许可

            grant ALL PRIVILEGES on DB_NIM_CABLES to OTHERUSER ;

PS我给予所有权限,应该足以给出SELECT,INSERT,UPDATE。

请参阅此文档,在其讨论OBJECT权限的部分。

https://docs.oracle.com/database/122/DBSEG/configuring-privilege-and-role-authorization.htm#DBSEG99868

答案 1 :(得分:0)

有重复的表,一个在CASSETTE模式中,另一个在GTFIBER中。我正在更新GTFIBER方案中的表并在另一个方案中查找数据。谢谢你的时间