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é
InformationsquelleAutor Hal | 2011-03-02