【问题标题】:Return boolean value from oracle function从 oracle 函数返回布尔值
【发布时间】: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) 它不返回真或假。

【问题讨论】:

    标签: oracle function boolean


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多