2012-09-12 56 views
0

我有一個小問題與Oracle命令,如下:奇Oracle錯誤

command.CommandText = "SELECT ID, NAME, RATING, LENGTH, STARTTIME FROM SCHEDULE WHERE ID=301 AND ROWNUM=1 AND SCHEDULE.STARTTIME <= SYSDATE ORDER BY STARTTIME DESC;"; 

它運行得很好Oracle SQL Developer中,返回正是我需要的,但在C#中,我得到的以下錯誤:

ORA-06550: line 1, column 186: 
PLS-00103: Encountered the symbol "," when expecting one of the following: 

. (* @ % & = - + </> at in is mod remainder not rem 
<an exponent (**)> <> or != or ~= >= <= <> and or like like2 
like4 likec as between || indicator multiset member 
submultiset 

任何人都可以看到它的任何問題,或任何在C#中非法的問題嗎?

編輯:執行代碼:

command.Connection = conSQL; 
using (IDataReader reader = command.ExecuteReader()) 
{ 
    do 
    { 
     int count = reader.FieldCount; 
     while (reader.Read()) 
     { 
      for (int i = 0; i < count; i++) 
      { 
       string setting = reader.GetName(i).ToString(); 
       object value = reader.GetValue(i); 

       ** Data assigned to variables here, hidden due to length of code** 
       ** Follows pattern: object.property(reader.name) = reader.value ** 
      } 

     } 
    } while (reader.NextResult()); 
} 
+1

你能發表完整的錯誤嗎?以下:.....? – VIRA

+0

執行代碼必須有一些奇怪的東西。請發佈其餘的錯誤**和**執行該命令的完整代碼片段。 –

回答

2

點不放;在命令結尾,這是一個命令行工具約定,不是sql本身的一部分(例如,sqlplus也使用/作爲終止符)

+0

這會導致它在分析語句時說它遇到','? –

+0

@Mike:已知Oracle的錯誤消息不太有用。我首先想到的是「聲明中可能有一個尾隨的分號」,而且,它就是這樣。 –

+0

@BobJarvis,真棒。現在,OP公佈了其餘的錯誤,我必須誠實地說,我的心臟沉沒,看到它,它沒有任何價值。 –

1

名稱和標識都是Oracle SQL中的特殊關鍵字。請嘗試:

SELECT "ID", "NAME"... 
+0

我已經試過這個,並且和Bob的建議結合,得到'ORA-00933:SQL命令沒有正確結束' – Skulmuk

+0

添加「;」返回聲明並確保列的capitilisation符合定義,因爲「ID」區分大小寫。 – Slugart

+0

是的,它們完全相同 – Skulmuk

1

刪除SQL語句上的尾隨分號。

分享和享受。

+0

而這會導致它在分析語句時遇到'''。 –

+0

如果我刪除尾部的分號,我會得到'ORA-00933:SQL命令沒有正確結束' – Skulmuk

+0

@Mike:正如我在下面指出的,Oracle的消息通常無助於診斷實際問題。在這種情況下,聲明結尾的分號是可能的罪魁禍首。 –