gpt4 book ai didi

oracle - 如何传递包含@的用户名作为参数

转载 作者:行者123 更新时间:2023-12-01 03:05:40 25 4
gpt4 key购买 nike

我正在尝试打开 Oracle 数据库中来自 PL/SQL 的 REST API 调用,为此,我需要我的用户能够执行网络调用。

经过一些研究,我相信以下方法应该可行:

BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => '*',
ace => xs$ace_type(privilege_list => xs$name_list('connect'),
principal_name => 'my-user@my-domain',
principal_type => xs_acl.ptype_db));
END;

...只要 my-user 是一个简单的名称,例如“my-user”,它似乎就可以工作;当尝试将此应用于包含 @ 的用户名时会出现问题,如上例所示。

在这种情况下,我得到错误:

ORA-44003: invalid SQL name

当比较用户名中包含 @ 的用户与不包含它的用户时,我能看到的唯一明显区别是前者具有 Authentication Type = EXTERNAL,而后者有 Authentication Type = PASSWORD,但我不明白为什么这很重要。

在我看来,这可能是一个与语法相关的问题 - 任何人都可以确认或否认这一点,并指出在这种情况下传递 principal 参数的正确方法?

最佳答案

主体始终是数据库用户,因此名称中不能有@。您需要指定将代表最终用户执行 REST 调用的数据库用户。

关于oracle - 如何传递包含@的用户名作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57987342/

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