Je reçois une erreur en écrivant le résumé, la table et la déclaration ci-dessous,
Déclaration:
SELECT IIF(EMP_ID=1,'True','False') from Employee;
Erreur: 00907-manquant parenthèses droites
CREATE TABLE SCOTT.EMPLOYEE
(
EMP_ID INTEGER NOT NULL,
EMP_FNAME VARCHAR2(30 BYTE) NOT NULL,
EMP_LNAME VARCHAR2(30 BYTE) NOT NULL,
EMP_ADDRESS VARCHAR2(50 BYTE) NOT NULL,
EMP_PHONE CHAR(10 BYTE) NOT NULL,
EMP_GENDER CHAR(1 BYTE)
)
S'il vous plaît fournir vos entrées.
Oracle ne fournit pas une telle fonction IIF. Essayez plutôt l’une des alternatives suivantes:
SELECT DECODE(EMP_ID, 1, 'True', 'False') from Employee
SELECT CASE WHEN EMP_ID = 1 THEN 'True' ELSE 'False' END from Employee
Deux autres alternatives:
une combinaison de NULLIF
et NVL2
. Vous ne pouvez utiliser ceci que si emp_id
est NOT NULL
, ce qui est le cas dans votre cas:
select nvl2(nullif(emp_id,1),'False','True') from employee;
simple CASE
expression (Mt. Schneiders a utilisé une expression dite CASE
recherchée)
select case emp_id when 1 then 'True' else 'False' end from employee;
En PL/SQL, il existe une astuce pour utiliser la fonction non documentée OWA_UTIL.ITE
.
SET SERVEROUTPUT ON
DECLARE
x VARCHAR2(10);
BEGIN
x := owa_util.ite('a' = 'b','T','F');
dbms_output.put_line(x);
END;
/
F
PL/SQL procedure successfully completed.