Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Connexion aux bases de données
Connexion aux bases de données Forum d'entraide sur la connectivité Firebird: composants, drivers, transactions, etc.
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 23/02/2007, 15h26   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 9
Points : 3
Points : 3
Par défaut Transaction & Cursor

Bonjour,

Dans le cadre d'une application C++, je désire executer 2 transactions ; 1 select et 1 curseur :

EXEC SQL SET DATABASE DB1 = ... USER '...' PASSWORD '...';
...

EXEC SQL BEGIN DECLARE SECTION;
isc_tr_handle T1
isc_tr_handle T2
...
EXEC SQL END DECLARE SECTION;

T1 = (isc_tr_handle) NULL;
T2 = (isc_tr_handle) NULL;

EXEC SQL SET TRANSACTION NAME T1 READ ONLY;
EXEC SQL SELECT TRANSACTION T1 ... INTO ...
EXEC SQL COMMIT TRANSACTION T1;
...
EXEC SQL DECLARE curseur CURSOR FOR SELECT ...
EXEC SQL SET TRANSACTION NAME T2 READ COMMITTED;
EXEC SQL OPEN TRANSACTION T2 curseur;
EXEC SQL FETCH curseur INTO ...
EXEC SQL CLOSE curseur;
EXEC SQL COMMIT TRANSACTION T2;
...


****
Précompilation : gpre -manual *.epp
Compilation : No error, no warning
Select : ok
****

La première transaction fonctionne, mais la deuxième plante le programme.
Quelqu'un pourrait-il m'indiquer mes erreurs ?
Merci
digital_versatil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 16h40   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
hum, tu as essayé que le code de la deuxième transaction ?

j'imagine que tu as lu :
http://support.borland.com/entry.jsp...categoryID=154
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 18h06   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 9
Points : 3
Points : 3
La transaction 2 plante même executée toute seule.
Et plus précisement au moment du FETCH.

System : WINXP, VC8, firebird 2.0

Merci pour le lien.
digital_versatil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 20h52   #4
Invité de passage
 
Inscription : septembre 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 9
Points : 3
Points : 3
Par défaut Résolu

Problème Résolu

Le problème vennait de l'utilisation d'un 'char'

EXEC SQL BEGIN DECLARE SECTION;
...
char rank='A';
EXEC SQL END DECLARE SECTION;
...
EXEC SQL FETCH curseur INTO :&rank; // remaque : "&"
...

Il me manquait le "&"
digital_versatil 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 18h22.


 
 
 
 
Partenaires

Hébergement Web