web-dev-qa-db-ja.com

Oracle関数からブール値を返します

関数から値を返そうとしています

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;

クエリを選択しているとき、デュアルからcompairenumber(5,10)を選択すると、trueまたはfalseが返されません。

7
ashish

ブール値は、他のPL/SQLコードでのみ使用できます。OracleSQLではnotです。戻り値がselect ... from dualで使用可能な関数が必要な場合は、戻り値varchar2および'true''false'を返す関数を定義する必要があります(または'T'および'F'、または戻り値(値1および0)。

悲しいことに、Oracle SQLはブールデータ型をサポートしていません(ただし、プログラミング言語PL/SQLはサポートしています)。

9
mathguy

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
1
user1205115