以下 SQL 陳述句在 Oracle SQL Developer 中執行時回傳資料:
SELECT TC_GUID FROM TBLBUF WHERE TC_DEST = 'aaaaaaa' AND TC_STATE <= 20
但是當它在以下 C# 代碼中執行時,閱讀器不回傳任何行。
using Oracle.ManagedDataAccess.Client;
using System;
using System.Data;
using System.Data.Common;
using System.Threading;
using System.Threading.Tasks;
namespace OracleQuery
{
public class Program
{
public static DbDataReader QueryReader()
{
OracleConnection connection = new OracleConnection(".........");
connection.Open();
using (OracleCommand command = connection.CreateCommand())
{
command.InitialLOBFetchSize = -1;
command.InitialLONGFetchSize = -1;
((IDbCommand)command).Transaction = null;
command.CommandText = "SELECT TC_GUID FROM TBLBUF WHERE TC_DEST = 'aaaaaaa' AND TC_STATE <= 20";
command.CommandType = CommandType.Text;
return command.ExecuteReader(CommandBehavior.Default | CommandBehavior.CloseConnection);
}
}
public static void Main(string[] args)
{
DbDataReader reader = QueryReader();
while (reader.Read())
{
string s = (string)reader["TC_GUID"];
Console.WriteLine(s);
}
}
}
}
當我只留下 WHERE 子句的一部分時,要么 要么TC_DEST = 'aaaaaaa',TC_STATE <= 20它回傳行。
這種行為的原因可能是什么?
uj5u.com熱心網友回復:
這種行為的原因可能是什么?
已INSERT編輯但未COMMITted 的行僅在創建它們的會話中可見。因此,如果您創建了一些新行但沒有COMMIT在 SQL Developer 會話中發出命令,您將無法從任何其他會話中看到未提交的資料(即使您以同一用戶身份連接,因為它會創建一個不同的會話)。
如果是這種情況,解決方案將是COMMITSQL Developer 會話中的資料,然后其他會話可以看到它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/425319.html
上一篇:oracle中的單詞拆分
