具有布尔返回值的 pl/sql 函数的 OracleType?

Posted

技术标签:

【中文标题】具有布尔返回值的 pl/sql 函数的 OracleType?【英文标题】:OracleType for a pl/sql function with a boolean return value? 【发布时间】:2009-06-09 11:51:37 【问题描述】:

我正在开发这个应用程序,我必须调用一个用 PL/SQL 编写的返回布尔值的函数。据我了解,bool 不是 SQL 中的类型,而是 PL/SQL 中的类型,那么函数的返回类型是什么?

command.Parameters.Add("P_RETURN", OracleType.???);

(记录一下:我无法控制PL/SQL的结束,所以我无法重写函数)

【问题讨论】:

【参考方案1】:

您可以使用调用函数的结果调用SYS.diutil.bool_to_int 函数。例如:

SYS.diutil.bool_to_int(your_function(...))

来自文档:

bool_to_int:将 3 值布尔值转换为数字以供使用 在发送 BOOLEAN 参数/返回值 在请 v1(客户端)和请 v2 之间。由于 sqlnet 没有 BOOLEAN 绑定变量 TYPE,我们编码 布尔值 AS false = 0, true = 1, NULL = NULL FOR 网络传输 AS NUMBER

【讨论】:

这对我来说也是新的。 psoug.org/reference/diutil.html 显然是 DIANA 的实用程序包(PL/SQL 编译器)。它没有正式记录,但从 7.3.4 到 11g 似乎很稳定。【参考方案2】:

您必须将仅 PL/SQL 的 BOOLEAN 类型转换为 SQL 支持的类型。我知道,这很痛苦:欢迎来到 Oracle 世界。 Here is Steven Feuerstein reusable way to deal with it.

作为旁注,BOOLEANs are considered useless in SQL(无论如何由 Oracle 提供)。

【讨论】:

以上是关于具有布尔返回值的 pl/sql 函数的 OracleType?的主要内容,如果未能解决你的问题,请参考以下文章

检查后从表中返回值的 PL/SQL 函数

如何用PL/SQL Developer连接ORACL数据库

odp.net 可以将参数传递给布尔 pl/sql 参数吗?

始终返回相同布尔值的 Python 函数

PL/SQL 将字符串转换为布尔值

plsql中的布尔算术