`

Oracle queue的enqueue & dequeue

    博客分类:
  • DB
 
阅读更多
EXECUTE DBMS_AQADM.CREATE_QUEUE_TABLE( 
	Queue_table => '&1'||'.MARK_APPLY_QUEUE_TAB', 
	Queue_payload_type => '&1'||'.MARK_TYPE_EVENT', 
	storage_clause => 'PCTFREE 10 PCTUSED 40 INITRANS 32 MAXTRANS 255 TABLESPACE MARK_'||'&1'||'_DATA00', 
	Sort_list => 'ENQ_TIME', 
	Message_grouping => 1, 
	Compatible => '8.1.3');
	
EXECUTE DBMS_AQADM.CREATE_QUEUE( 
	Queue_name => '&1'||'.MARK_APPLY_QUEUE', 
	Queue_table => '&1'||'.MARK_APPLY_QUEUE_TAB', 
	Queue_type => 0, 
	Max_retries => 5, 
	Retry_delay => 0, 
	dependency_tracking => FALSE);
	
EXECUTE dbms_aqadm.start_queue (
	queue_name => '&1'||'.MARK_APPLY_QUEUE', 
	enqueue => TRUE , 
	dequeue => TRUE);

create or replace
TYPE "MARK_TYPE_EVENT"
AS
  OBJECT
  (
    ACCT_ID     VARCHAR2(32),
    SECURITY_ID VARCHAR2(32),
    EVENT_CODE  VARCHAR2(4),
    EVENT_TIME TIMESTAMP );
	
  sql_code    NUMBER;
  sql_msg     VARCHAR2(132);
  queue_options DBMS_AQ.DEQUEUE_OPTIONS_T;
  message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
  message_id RAW(16);
  event MARK_TYPE_EVENT;
  rid varchar2(20);
  no_messages           exception;
  PRAGMA EXCEPTION_INIT (no_messages, -25228);
 
DBMS_AQ.DEQUEUE(
    queue_name => 'MARK_APPLY_QUEUE',
    dequeue_options => queue_options,
    message_properties => message_properties,
    payload => event,
    msgid => message_id);
    ACCT_ID := event.acct_id;
    SECURITY_ID :=event.security_id;
    EVENT_CODE := event.event_code;
    EVENT_TIME := event.event_time;
    MSG_ID := RAWTOHEX(message_id);
分享到:
评论

相关推荐

    Oracle AQ使用实例

    Dequeue 操作可以与 Enqueue 操作结合使用,以实现消息的异步传递。 Oracle AQ 是一个功能强大且灵活的消息队列系统,广泛应用于企业级应用中。通过这个实例,我们了解了 AQ 的安装、配置、Payload Type、Queue ...

    利用Oracle AQ实现数据异步操作.pdf

    DBMS_AQADM.GRANT_SYSTEM_PRIVILEGE('DEQUEUE_ANY', aqdev, true); END; ``` 接下来,使用新创建的用户aqdev登录数据库,定义队列数据类型、队列表和队列。队列数据类型定义了存储在队列中的消息结构,例如: ```...

    Oracle高级队列(Advanced Queue)简单实例

    首先,Oracle高级队列的核心组成部分包括队列(Queue)、队列表(Queue Table)和消息类型(Message Type)。队列是存储消息的地方,而队列表则定义了队列的结构和属性,如存储空间、消息格式等。消息类型定义了队列...

    fila-de-pessoas:在大学的NetBeans上完成的Java练习

    在算法方面,可能会用到插入(enqueue)和删除(dequeue)操作,这些都是队列操作的基本算法。此外,如果项目涉及到对队列中的元素进行排序或查找,还可能用到其他算法,如快速排序、二分查找等。 NetBeans作为开发...

    淘宝校园招聘笔试试题.doc

    procedure ReverseQueue(Q: queue; S: stack); var temp: datatype; begin while not isEmpty(Q) do begin temp := dequeue(Q); // 从队列首部取出元素 push(S, temp); // 将元素压入栈 end; while not ...

    淘宝笔试题

    procedure ReverseQueue(Q: QueueType): var S: StackType; makeEmpty(S); while not isEmpty(Q) do value := deQueue(Q); push(S, value); end; while not isEmpty(S) do value := pop(S); enqueue(Q, ...

Global site tag (gtag.js) - Google Analytics