从 oracle 函数返回布尔值

Posted

技术标签:

【中文标题】从 oracle 函数返回布尔值【英文标题】:Return boolean value from oracle function 【发布时间】:2017-06-07 13:22:00 【问题描述】:

试图从函数返回值

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) 它不返回真或假。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

所以这意味着我应该写这样的东西 create or replace function compairenumber(num1 in number,num2 in number) return varchar is begin if num1 @ashish - 完全正确。除了在 Oracle 中(目前)最好使用 varchar2 数据类型,而不是 varchar 我更喜欢这个答案,因为它解释了为什么在这种情况下你不能使用 BOOLEAN。【参考方案2】:

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

【讨论】:

以上是关于从 oracle 函数返回布尔值的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Javascript 中的连续函数返回布尔值?

初学者问题:从 Python 中的函数返回布尔值

如何从订阅另一个函数的observable的函数返回布尔值?

Oracle - 选择一个布尔值?从 MYTABLE 中选择 COUNT(*) > 0

如何将从函数返回的布尔值分配给 PostgreSQL 9.4 中的变量?

从 ResultSet 获取布尔值