gpt4 book ai didi

oracle - Oracle中的PL/SQL函数看不到DBMS_AQ

转载 作者:行者123 更新时间:2023-12-02 11:33:42 25 4
gpt4 key购买 nike

我在使用 Oracle 9.2 和 JMS 时遇到问题。我创建了 PL/SQL 例程来将 XML 文本(从文件或 CLOB)发送到队列,但这个例程不能编译。

我的代码看起来像(省略填充消息):

create or replace procedure jms_test(msg varchar2)
is
id pls_integer;
message sys.aq$_jms_stream_message;
enqueue_options dbms_aq.enqueue_options_t;
message_properties dbms_aq.message_properties_t;
msgid raw(16);

java_exp exception;
v_filehandle_input utl_file.file_type;
v_newline varchar2(32767);
pragma exception_init(java_exp, -24197);
begin
message := sys.aq$_jms_stream_message.construct;
message.set_string_property('FROM', 'TEST');
id := message.clear_body(-1);
end;

Oracle 报告称:

Error(6,21): PLS-00201: identifier 'DBMS_AQ' must be declared

我查看了一些新闻组并尝试了我找到的所有内容,但没有成功。

  1. 授予(成功)许多权限

    • 向用户授予资源;
    • 授予用户连接权限;
    • 授予用户执行任何程序的权限;
    • 将 aq_administrator_role 授予用户;
    • 将 aq_user_role 授予用户;
    • 将 dbms_aqadm 上的执行权限授予用户;
    • 将 dbms_aq 上的执行权限授予用户;
    • 将 dbms_aqin 上的执行权限授予用户;
  2. desc dbms_aq 显示许多函数,例如 DEQUEUE、ENQUEUE、LISTEN

  3. 在 SQLPlus 中执行 catqueue.sql 和 dbmsaq.plb

有人知道可能出了什么问题吗?

已编辑:

我可以完成以下描述的所有操作:http://rwijk.blogspot.com/2009/02/whats-in-my-jms-queue.html ,所以 dbms_aq 在某种程度上是可见的,但在我的程序中不可见。

最佳答案

如果你这样做,它会起作用吗?

SYS.DBMS_AQ 

而不仅仅是

DBMS_AQ

如果是这样,则说明您缺少同义词。

编辑:

如果您现在收到“PLS-00201:标识符'SYS.DBMS_AQ”,那么我会仔细检查您的授权。

GRANT EXECUTE ON SYS.DBMS_AQ to <your-user>;

另外,为了确认一下,您已直接向用户授予执行权限,而不是通过角色?

关于oracle - Oracle中的PL/SQL函数看不到DBMS_AQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378721/

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