SQL - UNE simplification de la fonction de décodage
Je travaille avec un pl/sql de la procédure. J'ai un initialisé la variable myvar et je veux vérifier sa valeur : si elle ne contient pas de "Z", je veux qu'elle contient de l' 'P'.
Je suis actuellement en train de faire de cette façon:
myvar := decode(myvar,'Z','Z','P');
Je me demandais juste si il y avait une plus simple façon de le faire. Je veux dire, le décodage est déjà simple, mais je pense qu'il est bizarre de préciser le contenu de la variable alors qu'il est déjà en elle !
Si une telle fonction existe, il devrait ressembler à ceci:
Function myfunction(a In Varchar2, b In Varchar2, c In Varchar2)
Return Varchar2
Is
Begin
if a <> b
then
return c;
end if;
return a;
End myfunction;
Toute aide serait appréciée !
- DÉCODER est une fonction SQL, pas une fonction PL/SQL. Donc votre "mavar := décoder ..." ne fonctionnera pas.
- Autant que je sache, rien n'empêche d'utiliser une fonction SQL dans une PL/SQL programme. De toute façon, le décodage fonctionne très bien dans mon intérieur.
- pas à décoder. SQL> déclarer 2 myvar varchar2(1); 3 commencer 4 myvar := decode(myvar,'Z','Z','P'); extrémité 5; 6 / myvar := decode(myvar,'Z','Z','P'); * ERREUR à la ligne 4: ORA-06550: ligne 4, colonne 12: PLS-00204: la fonction ou de la pseudo-colonne "DÉCODER" peut être utilisé à l'intérieur d'une instruction SQL seulement ORA-06550: ligne 4, colonne 3: PL/SQL: Déclaration ignoré
Vous devez vous connecter pour publier un commentaire.
Mettre que la fonction de la vôtre pour le programme de déclaration de la section et de l'utiliser!
Il n'y a pas de fonction intégrée qui fait exactement ce que vous voulez.
Vous pouvez utiliser CAS plutôt que de DÉCODER:
Il n'en est pas plus courte si!
Je suis d'accord, la meilleure option est d'utiliser CAS expression:
Une autre approche si vous vous sentez heureux avec DÉCODER est pour exécuter cette requête:
Pour répondre à votre question initiale de savoir si il existe un moyen plus simple, il y a aussi ceci: