Bonjour,
J'ai un probleme avec la creation d'une sequence au sein d'une transaction :
J'ai du code qui est execute dans une transaction (je n'ai pas la possibilite de modifier cela), et dans ce code, je dois creer une sequence. J'ai donc ajoute le code suivant :
Mon soucis est que lorsque j'execute ce code, j'ai une erreur "ORA-02089: COMMIT is not allowed in a subordinate session".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 /* ... sequence */ snprintf (ma_sequence, LG_SEQUENCE, " CREATE SEQUENCE svc_seq_%s " " START WITH 1 " " INCREMENT BY 1 " " MAXVALUE %lu " " MINVALUE 1 " " CYCLE " " CACHE %d " " NOORDER ", appli_name, ULONG_MAX, LG_CACHE_SEQUENCE); EXEC SQL PREPARE service_sequence FROM :ma_sequence; if (SQLCODE != 0) { /* Gestion de l'erreur */ return (-1); } EXEC SQL EXECUTE service_sequence; if (SQLCODE != 0) { /* Gestion de l'erreur */ return (-1); }
Ok, si j'ai bien compris, c'est parce que la creation d'une sequence n'est pas gerable dans la transaction, ce qui ne me pose pas de probleme. Mais je ne trouve pas de solution pour creer tout de meme la sequence !
J'ai essaye de regarder un peu les transactions autonomes : PRAGMA AUTONOMOUS_TRANSACTION, mais je n'arrive pas a trouver la syntaxe correcte - et je ne suis pas certain que ce soit possible.
Est-ce que vous auriez une solution pour que je puisse creer ma sequence dans ce code ?
Merci,
Partager