c# - 为什么在该 CLOB 字段的 GetOrdinal 函数中出现 OutOfRange 异常?

标签 c# oracle select clob

这是我的代码示例。字段 FUNCTION_SCRIPT 是我的表 IS_FUNCTION 中的 CLOB 字段(唯一的 CLOB 字段)

public void ReadFunction(string FName, out string fContent) {
    OracleCommand command = _connection.CreateCommand();
    OracleTransaction transaction = _connection.BeginTransaction();
    command.Transaction = transaction;
    command.CommandText = "SELECT TO_CLOB(TO_NCLOB(FUNCTION_SCRIPT)) FROM IS_FUNCTION where FNAME=:fName ";
    command.Parameters.Add("FName", OracleType.NVarChar).Value = FName;
    OracleDataReader odr = command.ExecuteReader();
    int temp = odr.GetOrdinal("FUNCTION_SCRIPT");
    OracleLob myLob = odr.GetOracleLob(temp);
    fContent = (String)myLob.Value;
    odr.close();
}

执行 temp = odr.GetOrdinal("FUNCTION_SCRIPT") 语句时出现超出范围异常。不知道为什么?我已经尝试阅读这个 CLOB 字段几个小时了。这是我距离最近的一次。我们将非常感谢您的帮助。

附:难道是我的SELECT语句有问题?我一直在从不同的引用文献中获取代码。

最佳答案

感谢所有的建议和帮助。我发现通过添加

解决了我的问题
 if(odr.Read())
            {
                int temp = odr.GetOrdinal("FUNCTION_SCRIPT");
                OracleLob myLob = odr.GetOracleLob(temp);
                fContent = (String)myLob.Value;
            }

换句话说,我在 ExecuteReader() 语句之后缺少了 odr.Read 语句。

关于c# - 为什么在该 CLOB 字段的 GetOrdinal 函数中出现 OutOfRange 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12574341/

相关文章:

c# - 根据用户击键更改控制台上的字符

c# - System.Globalization.CultureInfo 不包含 Name 的定义

java - Hibernate不同类型pojo映射

json - 如何在 PL/SQL 中解析 JSON 字符串

oracle - 检查约束可以与另一个表相关吗?甲骨文

R 根据两列选择最高计数单元格

HTML 选择下拉箭头样式

c# - 为什么 GETDATE() 在 SSMS 和 C# Microsoft.Practices.EnterpriseLibrary.Data 上运行时会产生不同的结果?

sqlite INSERT INTO ... WHERE NOT EXISTS 并获取 id?

c# - EntityFrameworkCore 有没有一种方法可以创建 EnumToStringConverter 而无需将枚举类型作为通用类型传递?