Re: attempt to tamper with cursors...
"Jean-Pierre Rosen" (via ada-france Mailing List) <[email protected]> Wed, 13 Sep 2023 19:46:30 +0200
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Organization | Adalog |
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------SF0OPND3XPX5MlMmI37xmEKi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Le 07/09/2023 à 19:19, Sowebio - Développement (via ada-france Mailing List) a écrit : > > Avé la liste... > > Je me demande bien ce que j'ai loupé - vu les recherches, je ne suis > pas le seul, mais ça ne me console pas ;) > [...] > Dans l'adb, je m'en sert à chaque nouvelle DB à ouvrir/créer pour > recueillir tout le schéma de la DB. Mais à la fin du traitement d'une > DB, je souhaite vider cette liste pour une éventuelle autre DB... Dans > la fonction de finalisation, j'ai tout essayé, genre : > > > --------------------------------- > C : Schema_Lines_List.Cursor := Schema.First; > Next : Schema_Lines_List.Cursor; > use Schema_Lines_List; -- < obligatoire pour gérer les opérateurs > begin > > -- D'abord la procédure normale : > Schema.Clear; > > -- Puis une manip de Jeffrey Carter (en sauvegardant le Curseur > pour tromper le compilo) > loop > exit when C = Schema_Lines_List.No_Element; > declare > begin > Next := Schema_Lines_List.Next (C); > Schema.Delete (Position => C); > C := Next; > end; > end loop; > > -- Et même un simple Delete_Last > Schema.Delete_Last; > > --------------------------------- > > Dans tous les cas, j'ai : > > ------------------------------------------------------------------------------------- > Exception time : 20230907-155408 > Program uptime : 0h0 0m0 0s > Program build DT stamp : build 2023-09-07 15:53:58 > Program name & version : testapi v0.7 > Library name & version : v22 v0.1 > Start directory : /home/sr/opt/v22/bin > Home directory : /home/sr > Ada mem. alloc. (bytes): Ada Cur: [ 12540 ] Max: [ 19672 ] > All mem. alloc. (bytes): All Cur: [ 15335424 ] Max: [ 15335424 ] > > raised PROGRAM_ERROR : > v22.Sql.Schema_Lines_List.*Implementation.TC_Check: attempt to tamper > with cursors* Normalement, un simple Clear doit marcher. Je pense qu'il doit te rester quelque part un curseur d'ouvert, ce qui interdit de supprimer des éléments. -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX https://www.adalog.fr https://www.adacontrol.fr _______________________________________________ Ada-france mailing list [email protected] --------------SF0OPND3XPX5MlMmI37xmEKi Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <div class="moz-cite-prefix">Le 07/09/2023 à 19:19, Sowebio - Développement (via ada-france Mailing List) a écrit :<br> </div> <blockquote type="cite" cite="mid:[email protected]"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <p><font face="Calibri">Avé la liste...</font></p> <p><font face="Calibri">Je me demande bien ce que j'ai loupé - vu les recherches, je ne suis pas le seul, mais ça ne me console pas ;)<br> </font></p> </blockquote> [...]<br> <blockquote type="cite" cite="mid:[email protected]"><font face="Calibri">Dans l'adb, je m'en sert à chaque nouvelle DB à ouvrir/créer pour recueillir tout le schéma de la DB. Mais à la fin du traitement d'une DB, je souhaite vider cette liste pour une éventuelle autre DB... Dans la fonction de finalisation, j'ai tout essayé, genre :<br> </font> <p><tt><br> </tt><tt>---------------------------------<br> C : Schema_Lines_List.Cursor := Schema.First;<br> Next : Schema_Lines_List.Cursor;<br> use Schema_Lines_List; -- < obligatoire pour gérer les opérateurs<br> begin<br> </tt></p> <p><tt> -- D'abord la procédure normale :<br> Schema.Clear;<br> <br> -- Puis une manip de Jeffrey Carter (en sauvegardant le Curseur pour tromper le compilo)<br> loop<br> exit when C = Schema_Lines_List.No_Element;<br> declare<br> begin<br> Next := Schema_Lines_List.Next (C);<br> Schema.Delete (Position => C);<br> C := Next;<br> end;<br> end loop;<br> <br> -- Et même un simple Delete_Last<br> Schema.Delete_Last;</tt></p> <tt>---------------------------------</tt><br> <br> Dans tous les cas, j'ai :<br> <br> -------------------------------------------------------------------------------------<br> <tt>Exception time : 20230907-155408</tt><tt><br> </tt><tt>Program uptime : 0h0 0m0 0s</tt><tt><br> </tt><tt>Program build DT stamp : build 2023-09-07 15:53:58</tt><tt><br> </tt><tt>Program name & version : testapi v0.7</tt><tt><br> </tt><tt>Library name & version : v22 v0.1</tt><tt><br> </tt><tt>Start directory : /home/sr/opt/v22/bin</tt><tt><br> </tt><tt>Home directory : /home/sr</tt><tt><br> </tt><tt>Ada mem. alloc. (bytes): Ada Cur: [ 12540 ] Max: [ 19672 ]</tt><tt><br> </tt><tt>All mem. alloc. (bytes): All Cur: [ 15335424 ] Max: [ 15335424 ]</tt><tt><br> </tt><tt><br> </tt><tt>raised PROGRAM_ERROR : v22.Sql.Schema_Lines_List.</tt><tt><b>Implementation.TC_Check: attempt to tamper with cursors</b></tt><br> </blockquote> <div class="moz-signature">Normalement, un simple Clear doit marcher. Je pense qu'il doit te rester quelque part un curseur d'ouvert, ce qui interdit de supprimer des éléments.<br> </div> <div class="moz-signature">-- <br> J-P. Rosen<br> Adalog<br> 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX<br> <a class="moz-txt-link-freetext" href="https://www.adalog.fr">https://www.adalog.fr</a> <a class="moz-txt-link-freetext" href="https://www.adacontrol.fr">https://www.adacontrol.fr</a> </div> <div style="background: transparent; border: none; clear: both; display: block; float: none; position: static"><br/>_______________________________________________<br/>Ada-france mailing list<br/>[email protected]</div></body> </html> --------------SF0OPND3XPX5MlMmI37xmEKi--