具有布尔返回值的 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?的主要内容,如果未能解决你的问题,请参考以下文章