MAJ : en fait il manquait un paramètre de compilation pour proc :
intyp=toto
toto etant le fichier de sortie de la commande ott.
-------------------------------------------------------

Bonjour,

J'utilise Streams AQ et je voudrais faire un prog C pour enqueuer

A la compilation j'ai les messages d'erreur suivants :
----------------------------------------------------------------------------------------------------
Semantic error at line 32, column 11, file enqueue.ec:
EXEC SQL ALLOCATE :message;
..........1
PCC-S-02319, expression type does not match usage
Semantic error at line 37, column 40, file enqueue.ec:
EXEC SQL OBJECT SET subject, text OF :message TO :sujetMsg, :texteMsg;
.......................................1
PCC-S-02408, Expecting an expression of some Object type
---------------------------------------------------------------------------------------------------

Je travaille avec Oracle 10.2.0 Standard edition.
Voila le code

ora_usertype.h (generated by ott) :
---------------------------------
#ifndef USERTYPE_ORACLE
# define USERTYPE_ORACLE
#ifndef OCI_ORACLE
# include <oci.h>
#endif

typedef OCIRef ydel_typ_ref;

struct ydel_typ
{
OCIString * subject;
OCIString * text;
};
typedef struct ydel_typ ydel_typ;

struct ydel_typ_ind
{
OCIInd _atomic;
OCIInd subject;
OCIInd text;
};
typedef struct ydel_typ_ind ydel_typ_ind;

#endif
-------------------------------------------------------------------------------------------
Le programme :
#include <stdio.h>
#include <sql2oci.h>
#include <sqlca.h>
#include "ora_usertype.h"

int main()
{
ydel_typ *message=(ydel_typ*)0;
ydel_typ_ind *imsg;
char sujetMsg[30];
char texteMsg[100];

char *sql_connect = "John/Doe";

EXEC SQL CONNECT :sql_connect;
EXEC SQL ALLOCATE :message;

strcpy(sujetMsg,"THE SUBJECT");
strcpy(texteMsg,"The message text");
EXEC SQL OBJECT SET subject, text OF :message TO :sujetMsg, :texteMsg;

EXEC SQL EXECUTE
DECLARE
message_properties dbms_aq.message_properties_t;
enqueue_options dbms_aq.enqueue_options_t;
msgid RAW(16);
BEGIN
dbms_aq.enqueue(queue_name => 'ydel_queue',
message_properties => message_properties,
enqueue_options => enqueue_options,
payload => :message:imsg, /* indicator must be specified */
msgid => msgid);
END;
END-EXEC;
EXEC SQL COMMIT;
return(0);
}
-------------------------------------------------------------------------------------------------------------------
Le script de compilation :

proc parse=full sqlcheck=full userid=john/doe mode=oracle release_cursor=
no maxopencursors=30 unsafe_null=yes dbms=V8 dynamic=ansi type_code=ansi code=ansi_c char_map=STRING include=/products/oracle/precomp/public include=/products/oracle/rdbms/public include=/products/oracle/rdbms/demo include=/products/oracle/plsql/public include=/products/oracle/network/public define=ORA iname=$1 oname=$1.c
--------------------------------------------------------------------------------------------------------------------

Je n'arrive vraiment pas a trouver pourquoi cette erreur....
Une aide serait grandement utile.

Merci
Cdlt
Yd