如何在SELECT语句中使用BOOLEAN类型

67

我有一个带有 BOOLEAN 类型参数的 PL/SQL 函数:

function get_something(name in varchar2, ignore_notfound in boolean);

这个函数是第三方工具的一部分,我无法更改它。

我希望像这样在SELECT语句中使用这个函数:

 select get_something('NAME', TRUE) from dual;

这段代码无法运行,我遇到了以下异常:

ORA-00904: “TRUE”:无效标识符

我的理解是,关键字TRUE未被识别。

我该如何使其正常运行?


2
我为Oracle感到尴尬,因为你甚至无法在SQL语句中使用从PL/SQL块返回的布尔值进行比较。你甚至不能将这样的函数包装在"CASE"语句中。唯一明智的解决方案是升级你的数据库到PostgreSQL,它可以完美地处理SQL语句中的布尔值。 - cartbeforehorse
这并不完全正确。使用内置的sys.diutil.bool_to_int将BOOLEAN转换为INTEGER 0或1。在存储过程中,使用BOOLEAN变量没有问题,但这并不是关注的问题... - Allen
PostgreSQL在列中具有布尔数据类型。在这方面,它比Oracle更现代化。此外,它还具有无限字符串的TEXT数据类型... - Roland
11个回答

-5

PL/SQL 抱怨 TRUE 不是有效的标识符或变量。设置一个本地变量,将其设置为 TRUE,并将其传递到 get_something 函数中。


7
不,Oracle SQL 简单地不能处理布尔值 :-( - Tony Andrews
此外,我想在视图定义中使用此函数,而不是在脚本内部。 - Ula Krukar
@Ula,Tony:那么我想包装函数是最合适的方式。 - David Andres
@a_horse_with_no_name 我不确定你在这里的观点是什么。当然,PL/SQL支持布尔类型 - 这个问题表明了这一点。但是,SQL不支持。因此,“SQL根本无法处理布尔值。” - Tony Andrews
@a_horse_with_no_name,不是这样的吗?! - Tony Andrews

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接