- create or replace procedure p102_mt_dequeue
- (
- p_equeue_name In varchar2,
- p_client_id Out Number,
- p_res_str Out varchar2,
- p_label out varchar2,
- p_body out varchar2)
- Is/*
- 功能: 出队列,返回给java程序
- */
- v_Dequeue_Options Dbms_Aq.Dequeue_Options_t;
- v_Message_Properties Dbms_Aq.Message_Properties_t;
- v_Message_Handle Raw(16);
- v_Body_queue Mt_Struc;
- v_label Varchar2(200);
- v_body varchar2(1000);
- res_str varchar2(20);
-
- vPid NUMBER:=102;
- vProName VARCHAR2(50):='p102_mt_dequeue';
- vProTip VARCHAR2(255);
- vErrorCode VARCHAR2(20);
- vErrorMsg VARCHAR2(2000);
- v_count Number;
- Begin
-
- p_res_str:='-1' ;
-
-
-
- Select Count(0) Into v_count From sms_mt_tab Where q_name=p_equeue_name ;
- If v_count >0 Then
- dbms_aqadm.start_queue(p_equeue_name,enqueue=>true, dequeue=> true);
- Dbms_Aq.Dequeue(Queue_Name => p_equeue_name,
- Dequeue_Options => v_Dequeue_Options,
- Message_Properties => v_Message_Properties,
- Payload => v_Body_queue,
- Msgid => v_Message_Handle);
-
-
-
- p103_change_label_body_str(v_Body_queue,res_str,v_label,v_body);
- If res_str='0' Then
- p_label :=v_label;
- p_body :=v_body;
- p_client_id:=v_Body_queue.CLIENT_ID;
-
- Commit;
- p_res_str:='0' ;
- Else
- p_res_str:='出队列后组串失败!' ;
- End If;
- Else
- p_res_str:='队列里面没有数据,休息一下';
- End If;
- Exception
- When Others Then
- p_res_str:='-100';
- vProTip:='出队过程异常!';
- vErrorCode:=SQLCODE;
- vErrorMsg:=SQLERRM;
- p_pub_write_error_log(vPid,vProName,'','',
- vProTip,vErrorCode,vErrorMsg,1);
- Rollback;
- end p102_mt_dequeue;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20945761/viewspace-586834/
,如需转载,请注明出处,否则将追究法律责任。