|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 33 ![]() |
Bonjour à tous et merci,
J'ai une base de donnée crée sous Firebird 1.5. Je veux passer le nom d'une table comme paramètre dans une procédure stocké. Tous d'accord, qu'avec Intrebase c impossible, mais avec firebird c possible. Bon, j'ai l'essayé avec firebird mais même pb !!!! et voici mon code de la procédure stocké : Code :
on a table sequenceur contenant la liste des nom des tables dans la colonne entite et leurs compteurs d'id. sequenceur (entite varcher(30), compteur integer) Pour chaque nom du table faire : calculer le max des id et l'affecter au variable i. puis mettre à jour le compteur de la table sequenceur pour chaque entite (nom table) parcouru. Je crois que c clair. (espérent bien bien sûr) lors de l'execution tous va bien mais qds je vérifi la colonne compteur de la table sequenceur rien n'a été changé !!! (bien sûr j'ai fait tout les commit) [/code] |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Etant donné que c'est une procédure qui ne retourne aucunnes données, il ne faut surtout pas mettre de suspend.
Enlevez les suspends et je pense que tout irra mieux. Je suppose que les ID des tables sont gérés par des générateurs (sinon vous allez avoir des problemes si votre application est sencée être multi-users). Donc si vous avez des générateurs pourquoi ne pas lire les valeurs des générateurs plutot que de faire un max(id) sur chaque table qui a mon avis est plus couteux. |
|
|
00
|
|
|
#3 | ||
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 33 ![]() |
Citation:
mais, j'ai des questions qui manquent des justifications : - est ce que execute statement peut fonctionner sous interbase? Rep oui, mais comment Firebird == interbase même famille ? - si ma procédure ne retourne aucunnes données, est ce que le suspend gène l'execution de cette procédure? reponse oui, mais sans justification ? Citation:
y a t-il des commentaires ? |
||
|
|
00
|
|
|
#4 | ||||||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Citation:
Citation:
Execute Statement fait parti de ces nouveautées et donc cette fonction n'existe pas sous IB6. (Je ne suis même pas certain qu'elle soit dispo sous IB7.5). Citation:
Citation:
De plus même si dans votre procédure vous utilisez la méthode de la table des clés externe qui est la seule a être à peu pres portable (à condition de ne pas utiliser les procédures) il faut faire extrement attention à la façon de procéder et surtout du type de transaction utilisé pour mettre à jour cette table des clés sinon encore une fois le risque est de se retrouver avec des doublons. |
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com