関数から値を返そうとしています
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が返されません。
ブール値は、他のPL/SQLコードでのみ使用できます。OracleSQLではnotです。戻り値がselect ... from dual
で使用可能な関数が必要な場合は、戻り値varchar2
および'true'
で'false'
を返す関数を定義する必要があります(または'T'
および'F'
、または戻り値(値1および0)。
悲しいことに、Oracle SQLはブールデータ型をサポートしていません(ただし、プログラミング言語PL/SQLはサポートしています)。
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