Domanda

Ho un'applicazione che utilizza JMS in cima all'accodamento avanzato Oracle. Vorrei fare una query sulla tabella delle code che mostra il contenuto del messaggio (che nel mio caso è XML). Quindi, quando eseguo un 'selezionare user_data da [queue_table]' ottengo 'AQ SYS.AQ $ _JMS_TEXT_MESSAGE' come risposta.

Esiste una funzione che consente di visualizzare il contenuto di questo messaggio? Qualcosa come 'selezionare FUNCTION (user_data) da [queue_table]' o qualcosa del genere?

Ho cercato su Google, ho scansionato numerosi articoli Oracle sull'accodamento, ma non riesco a trovare questa cosa. Sospetto che ci sia un modo semplice per farlo, ma non riesco a trovarlo.

È stato utile?

Soluzione

Ho lottato anche con questo. Ho scritto una risposta qui: http: // rwijk .blogspot.com / 2009/02 / whats-in-my-jms-queue.html .

Saluti, Rob.

Altri suggerimenti

Quindi suppongo che dovrebbe essere:

select queue.user_data.text_vc from [queue_table] queue

Le risposte qui non gestiscono la visualizzazione di contenuti più grandi, memorizzati in user_data.text_lob . Se il contenuto è maggiore di un certo numero di byte (4000?), text_vc sarà null e devi guardare text_lob (che sarebbe null altrimenti)

Per mostrare tutti i dati, indipendentemente dalle dimensioni, è possibile utilizzare la seguente query utilizzando nvl :

SELECT nvl (q.user_data.text_vc, q.user_data.text_lob) FROM [queue_table] q

Suppongo che potresti (e dovresti considerare di) utilizzare coalesce invece di nvl , perché no valuta il secondo argomento , se il primo è già diverso da null , ma non l'ho ancora provato.

Aggiunta al commento di stuXnet:

SELECT nvl(to_clob(q.user_data.text_vc), q.user_data.text_lob) FROM queue_table q; 

senza to_clob otterrai ORA-22835 per dati maggiori di 4000 caratteri perché conserva lo spazio del primo argomento, che è solo VARCHAR2.

Prova il seguente comando:

seleziona user_data dal nome [queue_table]

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top