从 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 函数返回布尔值的主要内容,如果未能解决你的问题,请参考以下文章
如何从订阅另一个函数的observable的函数返回布尔值?
Oracle - 选择一个布尔值?从 MYTABLE 中选择 COUNT(*) > 0