从oracle函数返回布尔值

时间:2017-01-23 04:57:19

标签: oracle function boolean

尝试从函数

返回值
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) 它没有回归真或假。

2 个答案:

答案 0 :(得分:8)

布尔值只能用于其他PL / SQL代码,Oracle SQL中的不是。如果您想要一个函数,其返回值在select ... from dual中可用,那么您需要定义函数以分别返回值varchar2'true'的{​​{1}}(或'false''T',或返回数字,值为1和0)。

令人遗憾的是,Oracle SQL不支持布尔数据类型(尽管编程语言为PL / SQL)。

答案 1 :(得分:0)

使用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