Oracle REF CURSOR

适用于 Oracle 的 .NET Framework 数据提供程序支持 Oracle REF CURSOR 数据类型。 在通过数据提供程序使用 Oracle REF CURSOR 时,应考虑下列行为。

备注

有些行为与 Microsoft Oracle OLE DB 提供程序 (MSDAORA) 的行为不同。

  • 出于性能原因,除非显式指定,否则 Oracle 数据提供程序不会像 MSDAORA 一样自动绑定 REF CURSOR 数据类型。

  • 数据提供程序不支持任何 ODBC 转义序列,包括用于指定 REF CURSOR 参数的 {resultset} 转义。

  • 若要执行会返回 REF CURSOR 的存储过程,必须在 OracleParameterCollection 中定义参数,包括 Cursor 的 OracleType 以及 Output 的 Direction。 数据提供程序只支持作为输出参数绑定 REF CURSOR。 提供程序不支持 REF CURSOR 作为输入参数。

  • 不支持从参数值获取 OracleDataReader。 在执行命令后,值属于 DBNull 类型。

  • 适用于 REF CURSOR 的唯一 CommandBehavior 枚举值(例如在调用 ExecuteReader 时)是 CloseConnection,所有其他枚举值均会被忽略。

  • REF CURSOR 在 OracleDataReader 中的顺序取决于这些参数在 OracleParameterCollection 中的顺序。 ParameterName 属性被忽略。

  • 不支持 PL/SQL TABLE 数据类型。 但是,REF CURSOR 的效率更高。 如果必须使用 TABLE 数据类型,请使用 OLE DB .NET 数据提供程序和 MSDAORA。

本节内容

REF CURSOR 示例
包含三个示例,演示如何使用 REF CURSOR。

OracleDataReader 中的 REF CURSOR 参数
演示如何执行 PL/SQL 存储过程,返回一个 REF CURSOR 参数,并作为 OracleDataReader 读取此值。

使用 OracleDataReader 从多个 REF CURSOR 中检索数据
演示如何执行 PL/SQL 存储过程,返回两个 REF CURSOR 参数,并使用 OracleDataReader 读取这些值。

使用一个或多个 REF CURSOR 填充数据集
演示如何执行一个 PL/SQL 存储过程,返回两个 REF CURSOR 参数,并使用返回的行填充 DataSet

请参阅