我正在從.NET應用程序訪問Oracle數據庫。我的代碼結構如下:Oracle SQL語句不能從DB獲取
using (OracleConnection conn = new OracleConnection(Oradb))
{
conn.Open();
string sql = "SELECT RI_DESCRIPTION
FROM RI_RISK
WHERE RI_CODE = 'GAIL'";
OracleCommand cmd = new OracleCommand(sql, conn);
cmd.CommandType = CommandType.Text;
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
var result = dr.GetString(0);
Assert.AreEqual("Golden Arches Insurance", result);
}
現在,我不能讓這個語句返回任何東西 - 斷言失敗,結果=「」;
但是,我能得到這個語句返回的期望是什麼:
string sql = "SELECT CLI_ABBRNAME
FROM CLI_CLIENT
WHERE CLI_CLIENTNUMBER = 00404";
我已經檢查了若干倍,表和列名是否正確。我能看到的唯一區別是數據類型:
- RI_DESCRIPTION是LONG
- RI_CODE是VARCHAR2
- CLI_CLIENTNUMBER是VARCHAR2
- CLI_ABBRNAME是VARHCHAR2
因此,是不是我必須處理我沒有在代碼中執行的LONG操作?
此外,CLI_CLIENTNUMBER實際上是一個VARCHAR2,爲什麼我不需要在00404左右的單引號,而對於RI_CODE這是VARCHAR2我顯然需要圍繞'GAIL'的撇號(否則我會得到一個無效標識符例外
**編輯
聲明中完美的作品以及對SQL加上
**編輯 - ?解答
這一招,在答案的鏈接下面,是設置OracleC ommand對象InitialLONGGetchSize爲-1。
的DB似乎是一個爛攤子:描述不應該是一個數(LONG),和一個數字(LONG)不能是「金色拱門保險」 。 – 2012-02-27 00:11:28
直接針對數據庫運行sql(不是來自您的應用程序) - 驗證您是否獲得了預期的結果 – 2012-02-27 00:38:44