gpt4 book ai didi

oracle - GRANT SELECT 在更改后的 session 中不起作用

转载 作者:行者123 更新时间:2023-12-02 03:23:24 25 4
gpt4 key购买 nike

我有以下情况。我需要编写一个过程来让一个模式访问另一个模式的对象。问题是这个过程是由管理帐户通过 flyway 执行的。

我尝试了多种选择,但面临以下问题:

Error starting at line : 3 in command - (my begin...end procedure)
Error report -
ORA-00942: table or view does not exist
ORA-06512: at line 3
00942. 00000 - "table or view does not exist"

我的代码:

ALTER SESSION SET CURRENT_SCHEMA = AppUser;

BEGIN
FOR R IN (SELECT owner, table_name FROM dba_tables WHERE owner='AppUser') LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON '||R.owner||'.'||R.table_name||' TO QAUser';
END LOOP;
END;

如果不改变模式,它也不起作用。

最佳答案

您的所有者是大小写混合的 AppUser。因此,在语句中使用它时需要引用它,否则 Oracle 会将其转换为大写。

所以你可以试试这个:

ALTER SESSION SET CURRENT_SCHEMA = AppUser;

BEGIN
FOR R IN (SELECT owner, table_name FROM dba_tables WHERE owner='AppUser') LOOP
EXECUTE IMMEDIATE 'GRANT SELECT ON "'||R.owner||'"."'||R.table_name||'" TO "QAUser"';
END LOOP;
END;

参见 Oracle: What exactly do quotation marks around the table name do?

关于oracle - GRANT SELECT 在更改后的 session 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31787028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com