|
robert38 -> Problem Oracle Utilities Adapter Receive Port Procedure (21 March 2008)
|
Type of SQL = Procedure Provider Microsoft .NET Provider for Oracle Receive (Port). When I want to generate a XSD schema for a stored procedure something goes wrong. No Records were returned. An Adapter Schema cannot be generated. Parameter Name : Records Actual value was 0. I've tried the following functions. CREATE OR REPLACE PACKAGE BODY AQJ$BERICHTEN IS PROCEDURE verstuur ( p_topic IN VARCHAR2 , p_bericht IN CLOB , p_envelop IN mis_own.to_envelop , p_prioriteit IN BINARY_INTEGER DEFAULT 1 , p_bericht_id OUT RAW ) -- -- RWK, 25-02-2008 -- Deze procedure zal gebruikt worden om standaard JMS-berichten te -- versturen via een advanced queue. Het bericht wordt in een XML- -- structuur gepakt en uiteindelijk als JMS tekstbericht (datatype -- SYS.aq$_jms_text_message, subtype van SYS.aq$_jms_message) op -- de queue met de naam p_topic (naam afstemmen met Architectuur) -- gezet. -- IS t_verzendopties dbms_aq.enqueue_options_t; t_berichteigenschappen dbms_aq.message_properties_t; t_jms_bericht SYS.aq$_jms_message := SYS.aq$_jms_message.construct (dbms_aq.jms_text_message); BEGIN t_berichteigenschappen.priority := p_prioriteit; -- -- Versleutel de parameters tot een XML-bericht, althans, een bericht -- dat gevalideerd is als zijnde XML, maar het wordt uiteindelijk als -- VARCHAR2 richting de set_text methode gestuurd. Deze versleutelt het -- bericht naar een formaat dat past in het aq$_jms_message type. Als -- het bericht op of onder de 4000 karakters zit, komt de inhoud in het -- veld text_vc terecht. Boven de 4000 karakters wordt de inhoud in het -- veld text_lob geplaatst. -- t_jms_bericht.set_text ( mis_own.mis$berichten.xml_bericht ( p_berichtinhoud => p_bericht , p_envelop => p_envelop ) ); /* ( mis$berichten.xml_bericht ( p_berichtinhoud => '<ZoMaarEenWaarde>R</ZoMaarEenWaarde>' , p_envelop => to_envelop ( 'Uithuizing' , systimestamp , 1 , 0 , tt_attributen ( to_attribuut ('EAN-code','8712345678901') ) ) ) ); */ -- -- Zet het bericht op de queue genaamd "p_topic". De naamgeving van -- zo'n topic is afgestemd met de Architectuur-afdeling. -- dbms_aq.enqueue ( queue_name => p_topic , enqueue_options => t_verzendopties , message_properties => t_berichteigenschappen , payload => t_jms_bericht , msgid => p_bericht_id ); END verstuur ; PROCEDURE ontvang ( p_topic IN VARCHAR2 , p_bericht_id OUT RAW , p_bericht OUT CLOB ) -- -- RWK, 25-02-2008 -- Deze procedure is waarschijnlijk niet nodig in productie, omdat -- het lezen van berichten uit de queue door een externe partij zal -- gaan gebeuren en waarschijnlijk niet vanuit een database met -- PL/SQL procedures. De procedure is dan ook gemaakt voor -- testdoeleinden. -- IS t_ontvangstopties dbms_aq.dequeue_options_t; t_berichteigenschappen dbms_aq.message_properties_t; t_jms_bericht sys.aq$_jms_message; BEGIN t_ontvangstopties.wait := dbms_aq.no_wait ; dbms_aq.dequeue ( queue_name => p_topic , dequeue_options => t_ontvangstopties , message_properties => t_berichteigenschappen , payload => t_jms_bericht , msgid => p_bericht_id ); t_jms_bericht.get_text(p_bericht) ; END ontvang ; FUNCTION clob_refcursor_van_queue ( p_topic IN VARCHAR2 ) RETURN SYS_REFCURSOR -- -- RWK, 20-03-2008 -- IS t_ontvangstopties dbms_aq.dequeue_options_t; t_berichteigenschappen dbms_aq.message_properties_t; t_jms_bericht sys.aq$_jms_message; t_bericht_id RAW(616617); t_bericht CLOB; t_refcursor SYS_REFCURSOR; BEGIN t_ontvangstopties.wait := dbms_aq.no_wait ; dbms_aq.dequeue ( queue_name => p_topic , dequeue_options => t_ontvangstopties , message_properties => t_berichteigenschappen , payload => t_jms_bericht , msgid => t_bericht_id ); t_jms_bericht.get_text(t_bericht) ; OPEN t_refcursor FOR SELECT t_bericht FROM DUAL; RETURN t_refcursor; END clob_refcursor_van_queue ; FUNCTION xml_refcursor_van_queue ( p_topic IN VARCHAR2 ) RETURN SYS_REFCURSOR -- -- RWK, 20-03-2008 -- IS t_ontvangstopties dbms_aq.dequeue_options_t; t_berichteigenschappen dbms_aq.message_properties_t; t_jms_bericht sys.aq$_jms_message; t_bericht_id RAW(820821); t_bericht CLOB; t_refcursor SYS_REFCURSOR; BEGIN t_ontvangstopties.wait := dbms_aq.no_wait ; dbms_aq.dequeue ( queue_name => p_topic , dequeue_options => t_ontvangstopties , message_properties => t_berichteigenschappen , payload => t_jms_bericht , msgid => t_bericht_id ); t_jms_bericht.get_text(t_bericht) ; OPEN t_refcursor FOR SELECT XMLTYPE(t_bericht) FROM DUAL; RETURN t_refcursor; END xml_refcursor_van_queue ; FUNCTION varchar2_refcursor_van_queue ( p_topic IN VARCHAR2 ) RETURN SYS_REFCURSOR -- -- RWK, 20-03-2008 -- IS t_ontvangstopties dbms_aq.dequeue_options_t; t_berichteigenschappen dbms_aq.message_properties_t; t_jms_bericht sys.aq$_jms_message; t_bericht_id RAW(10321033); t_bericht VARCHAR2(4000); t_refcursor SYS_REFCURSOR; BEGIN t_ontvangstopties.wait := dbms_aq.no_wait ; dbms_aq.dequeue ( queue_name => p_topic , dequeue_options => t_ontvangstopties , message_properties => t_berichteigenschappen , payload => t_jms_bericht , msgid => t_bericht_id ); t_jms_bericht.get_text(t_bericht) ; OPEN t_refcursor FOR SELECT t_bericht FROM DUAL; RETURN t_refcursor; END varchar2_refcursor_van_queue ; END AQJ$BERICHTEN; /
|
|
|
|