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

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

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

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

【问题讨论】:

    标签: c# oracle plsql return-value


    【解决方案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 提供)。

    【讨论】:

      猜你喜欢
      • 2014-09-08
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多