这是我的代码示例。字段 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/