web-dev-qa-db-fra.com

Renvoie la valeur booléenne de la fonction Oracle

Essayer de retourner la valeur de la fonction 

create or replace function compairenumber(num1 in number,num2 in number)
return boolean is
begin
if num1 < num2 then
return true;
else 
return false;
end if;
end;

quand je donne une requête sélectionnez compairenumber (5,10) à partir de dual sa ne retourne pas true ou false.

4
ashish

Les valeurs booléennes ne peuvent être utilisées que dans un autre code PL/SQL, pas dans Oracle SQL. Si vous souhaitez une fonction dont la valeur de retour est disponible dans un select ... from dual, vous devez définir la fonction pour renvoyer varchar2 avec les valeurs de retour 'true' et 'false' respectivement (ou 'T' et 'F', ou le numéro de retour avec les valeurs 1 et 0).

Aussi triste que cela puisse être, Oracle SQL ne prend pas en charge le type de données booléen (contrairement au langage de programmation PL/SQL).

7
mathguy

utilisez return varchar2

create or replace function compairenumber(num1 in number, num2 in number)
  return varchar2 is
begin
  if num1 < num2 then
    return 'TRUE';
  else
    return 'FALSE';
  end if;
end;


select CASE
         WHEN compairenumber(5, 10) = 'TRUE' THEN
          'OK'
         ELSE
          'NOT'
       END
  from dual
0
user1205115