Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 02/06/2006, 22h17   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 41
Points : 11
Points : 11
Par défaut Firebird et les curseurs ?

je cherche à apprendre à manier firebird 2.0 ( tant qu'à faire !).
J'ai une table avec plusieurs colonnes dont une est vide.
Je souhaite remplir cette colonne vide en modifiant les valeurs de plusieurs autres ligne après ligne.
J'ai du mal à utiliser et comprendre la syntaxe des curseurs ou bien l'instruction
" for select ". Si quelqu'un peut m'aiguiller avec des exemples pas trop compliqués ce serait sympas !

Merci d'avance.

Michel
msuire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 23h21   #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
http://www.firebirdsql.org/rlsnotes2...l#psql-cursors
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 07h54   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 41
Points : 11
Points : 11
Par défaut firebird et curseurs

Merci Philippe

ça devrait aller !


salutations
Michel
msuire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 22h27   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 41
Points : 11
Points : 11
Par défaut Problèmes quand même !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
begin
 
Open client_curseur;
cpt = 1;
 
while (cpt < 5) do
begin
 
fetch client_curseur
INTO
:num_idx_cli2,
:cpt,
:numero_idx_myo,
:date_cli;
execute procedure test_maj :num_idx_cli2,:date_cli returning_values :numero_idx_myo;
UPDATE myo SET myo.numero = :numero_idx_myo;
cpt = cpt + 1;
suspend;
 
end
 
close client_curseur;
end
Voila le code de ma procédure; Je pensai que c'était bon, mais elle ne passe qu'une fois dans la boucle "While do", ne récupère que les valeurs de la première ligne et affecte toute la colonne considérée avec la même valeur et non les valeurs de chaque ligne.
Qu'est-ce que je fait de mal ?
si quelqu'un peut répondre ?
Merci.
Michel
msuire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2006, 10h03   #5
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
le suspend est de trop
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2006, 13h01   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2004
Messages : 41
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 41
Points : 11
Points : 11
Par défaut firebird et les curseurs

Merci pour le temps accordé.

j'ai retiré le "suspend" et maintenant la procedure plante IBexpert et Firebird. J'ai donc présumé sur l'erreur était alors au niveau de la déclaration du curseur dont la définition suit.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SET TERM ^ ;
 
CREATE PROCEDURE MAJ_TEST_M 
AS
DECLARE CLIENT_CURSEUR CURSOR FOR (SELECT myo.numclient,myo.numero,myo.date_1er_ach FROM myo);
 
DECLARE VARIABLE ANNEE CHAR(4);
DECLARE VARIABLE ANNEE2 VARCHAR(4);
DECLARE VARIABLE A1 CHAR(1);
DECLARE VARIABLE A2 VARCHAR(1);
DECLARE VARIABLE A3 VARCHAR(1);
DECLARE VARIABLE A4 VARCHAR(1);
....
Pour l'instant j'ai abandonné cette voie et j'ai résolu le problème d'une manière différente.
Pourtant je me dis que j'aurai un jour ou l'autre besoin des curseurs...

Merci de votre aide.
msuire 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 15h56.


 
 
 
 
Partenaires

Hébergement Web