Utilisation de PostgreSQL CASE dans les fonctions
Ne pouvons-nous pas utiliser CASE
condition en dehors de SQL SELECT
états?
E. g.:
CASE
WHEN old.applies_to = 'admin' THEN _applies_to = 'My Self'
ELSE _applies_to = initcap(old.applies_to)
END
_summary = _summary || '<li>Apply To: ' || _applies_to || '</li>';
J'obtiens l'erreur suivante:
ERROR: syntax error at or near "_summary"
LINE 86: _summary = _summary || '<li>Apply To: ' || _applies ...
source d'informationauteur Yohan Hirimuthugoda | 2012-01-19
Vous devez vous connecter pour publier un commentaire.
Il s'agit de la conditionnel structure de commande
CAS
de la langage procédural PL/pgSQLpour être utilisé dans plpgsql fonctions ouétats. À ne pas confondre avec le
CAS
expression de SQL. Autre langue! Et subtilement différentes règles de syntaxe, trop.Lors de SQL
CASE
peuvent être incorporées dans les expressions SQL à l'intérieur de PL/pgSQL code (qui est la plupart du temps il suffit de la colle pour les commandes SQL), vous ne pouvez pas avoir autonome de SQLCASE
expressions (ce serait absurde).Vous devez utiliser pleinement qualifié les déclarations, est arrêté avec un point-virgule (
;
) etEND CASE
pour le fermer.Réponse à la question de savoir en commentaire
Selon la documentation, la
ELSE
mot-clé d'unCASE
déclaration est pas en option. Je cite le lien ci-dessus:Toutefois, vous pouvez utiliser un vide
ELSE
:Ce qui est différent de SQL
CASE
expressions oùELSE
est facultatif, mais si le mot clé est présent, une expression doit être donné, trop!