Précédent   Forum des professionnels en informatique > Bases de données > Autres SGBD > InterBase
InterBase Forum d'entraide sur le SGBD InterBase de Codegear. Avant de poster -> F.A.Q Interbase, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/03/2005, 11h29   #1
Membre régulier
 
Inscription : décembre 2004
Messages : 142
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 142
Points : 76
Points : 76
Par défaut [INTERBASE 6.0] Procédures stockées

Bonjour à tous,

Dans une procédure stockée (INTEBASE 6.0), comment contrôler la bonne exécution d'un ordre SQL ?
Exemple : si je fais :
Code :
1
2
3
 
INSERT INTO MA_TABLE ( CHAMP1, CHAMP2)
           VALUES( :CHAMP1, :CHAMP2);
Comment s'assurer que l'insert s'est bien déroulé ?

Excusez-moi pour cette question de syntaxe, mais je n'ai pas à disposition la doc INTERBASE.

Autre chose : comment doit-on commiter un ordre SQL dans une procédure stockée ? Dans le tuto de Etienne Bar (ça, je peux le consulter !), je n'ai rien vu concernant ce point.

Merci de votre réponse.
Vulcanos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2005, 11h38   #2
Membre habitué
 
Avatar de .:morgoth:.
 
Inscription : février 2005
Messages : 124
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 124
Points : 116
Points : 116
>> A priori, s'il y a un probleme avec la requete, la procédure devrait se terminer et générer une erreur IB. Sinon tu peux toujours faire un SELECT juste derriere pour vérifier l'existence de la ligne dans la table.

>> Pour commiter une requete, tu n'as qu'a exécuter la commande 'COMMIT;' à tous les endroits de ta proc stockée ou tu souhaites sauvegarder la transaction.
.:morgoth:. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2005, 15h19   #3
Membre régulier
 
Inscription : décembre 2004
Messages : 142
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 142
Points : 76
Points : 76
Merci de ta réponse. Je vais essayer.
Merci aussi à Etienne Bar pour son tuto.

A+
Vulcanos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2005, 19h19   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Dans Interbase 6 on ne commit pas pas les procédures stoquées, seul l'application cliente peux débuter une transaction et donc la commiter ou annuler.

Cependant lorqu'un ordre SQL dans une PS se termine mal (code erreur) par défaut toute la PS est annulée et le code erreur est remonté au client.


Par contre il est possible de capturer les codes erreurs dans une PS afin de ne pas annuler ce qui a été fait précédemment ou exécuter une autre action.
Il suffit d'utiliser When xxx nn do

exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE procedure Machin
Begin
  Faire des trucs...non protégés
 
  Begin
    INSERT INTO MA_TABLE ( CHAMP1, CHAMP2) VALUES( 1, 'Toto');  
    INSERT INTO MA_TABLE ( CHAMP1, CHAMP2) VALUES( 1, 'Titi');  
    when SQLCODE -803 DO
      Le truc a faire si erreur 803;
  end
  Les trucs a faire en fin de PS qui seront exécutés même s'il y a une erreur -803 (primary key violation);
end
de mémoire et sans tester...
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h35.


 
 
 
 
Partenaires

Hébergement Web