2009-09-07 7 views
1

Après une lutte avec Oracle Advanced Queuing and dbms_aq package J'ai rencontré un autre problème. J'ai copié le code de tutoriels Oracle mais quand je compile ce code:Oracle: problème avec la construction du message JMS

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; 
begin 
    message := sys.aq$_jms_stream_message.construct(0); 
    message.set_string_property('FROM', 'TEST'); 
    id := message.clear_body(-1); 
end; 

il se plaint avec:

Error(9,40): PLS-00302: component 'CONSTRUCT' must be declared 
Error(10,10): PLS-00302: component 'SET_STRING_PROPERTY' must be declared 
Error(11,16): PLS-00302: component 'CLEAR_BODY' must be declared 

Je pense que ce code fonctionne sur le corps de la procédure, parce que j'ai essayé avec succès recettes What's in my JMS queue?

Ma version Oracle est: Oracle9i Enterprise Edition de presse 9.2.0.1.0 - Production

Toute idée de ce qui peut se tromper?

Répondre

2

Ressemble à un problème de version de base de données. AQ $ _JMS_STREAM_MESSAGE a une méthode de construction en 10G mais pas en 9i. Quelle version d'Oracle Server utilisez-vous?

+0

Désolé, la version est dans votre post. Donc, votre code ne fonctionnera probablement pas sur une base de données Oracle 9i – Rene

+0

+1 Bon point. – cagcowboy

+0

Oui, c'est probablement un problème de version. Je n'ai pas vérifié les informations de version du manuel Oracle. Merci! –

1

On dirait des subventions à nouveau

GRANT EXECUTE ON SYS.aq$_jms_stream_message To <your-user>; 

Est-ce que:

desc sys.aq$_jms_stream_message 

travail dans SQL * Plus à la fois le SYS + votre schéma?

Notez que SYS.AQ $ _JMS_STREAM_MESSAGE est un objet datbase/type, alors que SYS.DBMS_AQ est un paquet

EDIT

Ok ... peut-être le corps TYPE est manquant/non valide. Que fait:

SELECT owner, object_name, object_type, status 
FROM dba_OBJECTS 
WHERE OBJECT_NAME = 'AQ$_JMS_STREAM_MESSAGE' 

retourner?

+0

GRANT a réussi, desc fonctionne à partir des deux schémas, mais la fonction ne peut pas être compilée. –

+0

Résultat de la sélection: SYS, AQ $ _JMS_STREAM_MESSAGE, TYPE, VALIDE –

Questions connexes