我得到一個oracle 00911錯誤(非法字符)。我希望有人能幫助我理解。ORA 00911當SQL語句與Where子句結束時出現半冒號錯誤?
我用下面的代碼在My Oracle 11g數據庫執行SQL語句:
private DataTable ExecuteQuery(DbCommand query) {
DataTable result = new DataTable();
using (DbConnection con = CreateConnection()) {
try {
query.Connection = con;
query.CommandTimeout = int.MaxValue; // don't impose a timeout
using (DbDataAdapter dataAdapter = factory.CreateDataAdapter()) {
dataAdapter.SelectCommand = query;
dataAdapter.Fill(result);
}
}
...
如果我給這個函數的東西有DbCommand.CommandText
性質類似"Select * from X;"
它工作正常,但鑑於"Select * from x where y;"
這將拋出一個oracle 00911異常。如果我刪除分號,但是,它執行得很好。
有誰知道爲什麼它會拋出一個非法的字符錯誤,以僅在特定類型的語句中用分號結束語句嗎?
更新爲清楚:
我用來測試了分號造成的錯誤是確切的查詢:
這個查詢工作得很好: SELECT * FROM Machines;
這個查詢產生ORA 0911錯誤: SELECT * FROM Machines WHERE ID = 47;
雖然此查詢工作正常: SELECT * FROM Machines WHERE ID = 47
< - 只有分號改變
也正在使用的供應商是Oracle.DataAccess.Client
你能顯示你正在執行的查詢嗎? – 2012-03-06 00:58:59
它實際上是一個'Select * from X;'而另一個是'Select * from x where x.foo ='bar';' – user12345613 2012-03-06 01:01:34
你確定''bar''周圍的引號字符是普通引號字符ascii 39)? – 2012-03-06 02:39:08