[Postgresql] Procédure avec if ne fonctionne
Résolu
rgdu86
Messages postés
275
Date d'inscription
Statut
Membre
Dernière intervention
-
rgdu86 Messages postés 275 Date d'inscription Statut Membre Dernière intervention -
rgdu86 Messages postés 275 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai une base de données sur postgresql sur windows et j'ai une procédure qui ne veut pas être créée.
Voici à quoi ressemble ma procédure :
CREATE FUNCTION majsoldebanque ()
RETURNS float
AS
'
declare
idCompte integer;
sens character;
montant money;
if(sens='c') then
update COMPTE set SoldeBanque_Compte=SoldeBanque_Compte+@montant
where Id_Compte=@idCompte
else
update COMPTE set SoldeBanque_Compte=SoleBanque_Compte-@montant
where Id_Compte=@idCompte
endif
end
'
LANGUAGE 'plpgsql';
et voici le message d'erreur qui m'est affiché :
ERROR: syntax error at OR near "c"
LINE 13: IF(sens='c') then
^
********** Erreur **********
ERROR: syntax error at OR near "c"
État SQL :42601
Caractère : 129
Cette fonction me permettrai de mettre à jour un solde de compte bancaire.
Comment faire pour résoudre cette erreur ?
C'est assez important, j'en ai besoin très rapidement.
Par avance, merci.
Bien cordialement.
rgdu86
J'ai une base de données sur postgresql sur windows et j'ai une procédure qui ne veut pas être créée.
Voici à quoi ressemble ma procédure :
CREATE FUNCTION majsoldebanque ()
RETURNS float
AS
'
declare
idCompte integer;
sens character;
montant money;
if(sens='c') then
update COMPTE set SoldeBanque_Compte=SoldeBanque_Compte+@montant
where Id_Compte=@idCompte
else
update COMPTE set SoldeBanque_Compte=SoleBanque_Compte-@montant
where Id_Compte=@idCompte
endif
end
'
LANGUAGE 'plpgsql';
et voici le message d'erreur qui m'est affiché :
ERROR: syntax error at OR near "c"
LINE 13: IF(sens='c') then
^
********** Erreur **********
ERROR: syntax error at OR near "c"
État SQL :42601
Caractère : 129
Cette fonction me permettrai de mettre à jour un solde de compte bancaire.
Comment faire pour résoudre cette erreur ?
C'est assez important, j'en ai besoin très rapidement.
Par avance, merci.
Bien cordialement.
rgdu86
A voir également:
- [Postgresql] Procédure avec if ne fonctionne
- Le point d'entrée de procédure eventsetinformation est introuvable advapi32.dll - Forum Windows
- Procédure de frigo vide ✓ - Forum Consommation & Internet
- If exist ✓ - Forum Autoit / batch
- The realtek network controller was not found. if deep sleep mode is enabled please plug the cable ✓ - Forum Pilotes (drivers)
- Le point d'entree de procedure est introuvable kernel32 dll ✓ - Forum Windows
2 réponses
Bonjour,
Je ne connais pas ce langage mais je vais te donner des pistes par rapport à des langages que je connais.
if(sens='c') then
La variable locale sens est definie character mais n'est pas initialisée (aucune valeur ne lui est affectée)..
Pareil pour idCompte.
La syntaxe du test if ne serait pas plutot if (sens=='c') then
Les lignes d'instructions ne devraient pas se terminer par le point-virgule ;
En esperant t'avoir dépanné un peu
A+.
Je ne connais pas ce langage mais je vais te donner des pistes par rapport à des langages que je connais.
if(sens='c') then
La variable locale sens est definie character mais n'est pas initialisée (aucune valeur ne lui est affectée)..
Pareil pour idCompte.
La syntaxe du test if ne serait pas plutot if (sens=='c') then
Les lignes d'instructions ne devraient pas se terminer par le point-virgule ;
En esperant t'avoir dépanné un peu
A+.
Après avoir bidouiller dans tout les sens, voici la bonne réponse :
CREATE OR REPLACE FUNCTION majsoldebanque(idcompte integer, sens bpchar, montant double precision)
RETURNS double precision AS
begin
if(sens=c)then
update COMPTE set SoldeBanque_Compte=SoldeBanque_Compte+montant
where Id_Compte=idCompte;
else
update COMPTE set SoldeBanque_Compte=SoldeBanque_Compte-montant
where Id_Compte=idCompte;
end if;
end;
LANGUAGE 'plpgsql' VOLATILE
Merci quand même amigo.
Bien cordialement.
rgdu86
CREATE OR REPLACE FUNCTION majsoldebanque(idcompte integer, sens bpchar, montant double precision)
RETURNS double precision AS
begin
if(sens=c)then
update COMPTE set SoldeBanque_Compte=SoldeBanque_Compte+montant
where Id_Compte=idCompte;
else
update COMPTE set SoldeBanque_Compte=SoldeBanque_Compte-montant
where Id_Compte=idCompte;
end if;
end;
LANGUAGE 'plpgsql' VOLATILE
Merci quand même amigo.
Bien cordialement.
rgdu86