Rechercher : dans
Par :

[Postgresql] Procédure avec if ne fonctionne

Dernière réponse le 16 mar 2008 à 13:10:06 rgdu86, le 16 mar 2008 à 11:35:05 
 Signaler ce message aux modérateurs

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 Oui à Ubuntu, Non à Vista
Tout vient à point à qui sait attendre

Configuration: Windows XP
Opera 9.26

Meilleures réponses pour « [Postgresql] Procédure avec if ne fonctionne » dans :
Pascal - Tri par insertion - Récursivité- VoirVoici une procédure récursive qui permet de trier un tableau de n entiers en utilisant la méthode de tri par insertion : Procedure Tri_Ins (Var t: TAB; n: integer); Var aux,i : integer; begin If n > 1 Then begin ...
Procédure de demande d'aide et désinfection nettoyage VoirProcédure de demande d'aide et désinfection nettoyage Diagnostiquer une infection qui résiste aux logiciels classiques, l'éliminer et rendre une machine propre prend du temps. Voici quelques point à vérifier pour gagner du temps. A....
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
PL/SQL - Introduction au langage PL/SQL VoirIntroduction au langage PL/SQL Le langage PL/SQL est un langage L4G (entendez par ce terme un langage de quatrième génération), fournissant une interface procédurale au SGBD Oracle. Le langage PL/SQL intègre parfaitement le langage SQL en lui...
PostgreSQL - Introduction VoirPrésentation de PostgreSQL PostgreSQL (prononcez postgrècecuelle ou postgrèce) est un SGBDR (système de gestion de base de données relationnelles) fonctionnant sur des systèmes de type UNIX (par exemple Linux, FreeBSD, AIX, HP-UX, IRIX, Solaris,...

1

amigo, le 16 mar 2008 à 12:05:28

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+.

Répondre à amigo

2

 rgdu86, le 16 mar 2008 à 13:10:06

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 Oui à Ubuntu, Non à Vista
Tout vient à point à qui sait attendre

Répondre à rgdu86