2013-05-17 65 views
0

我對我的數據庫使用Microsoft Visual Studio C#2005和Oracle。我有一段使用SQL Statment的代碼。從關鍵字找不到預計的地方

下面是代碼:

con = new OracleConnection(conStr); 
      con.Open(); 
query = " SELECT EQPID, " + 
        " DECODE(CUTOFF_DATE, '20120501', SUM(TKINQTY))'20120501', " + 
" DECODE(CUTOFF_DATE, '20120502', SUM(TKINQTY))'20120502', " + 
        " DECODE(CUTOFF_DATE, '20120503', SUM(TKINQTY))'20120503' " + 
        " FROM DAILY_DATA " + 
        " WHERE CUTOFF_DATE BETWEEN '20120501' AND '20120503' " + 
        " AND EQPID LIKE 'MS-%' " + 
        " GROUP BY CUTOFF_DATE, EQPID " + 
        " ORDER BY CUTOFF_DATE, EQPID"; 
da = new OracleDataAdapter(); 
da.SelectCommand = new OracleCommand(query, con); 
      dt = new DataTable(); 
      da.Fill(dt); 
      table.DataSource = dt; 
con.Close(); 

當我嘗試調試它,我一直在具有的錯誤消息:

從關鍵字未找到預期

但正如我在oracle上試了一下,它沒有任何錯誤地運行。

非常感謝。 =)

+0

您的查詢語法無效,並且不會直接在Oracle中運行。只需複製SQL部分,將其粘貼到SQL實用程序中,刪除所有雙引號和加號,然後嘗試運行它。這是無效的。 (提示:在兩個SUM語句後面看;這兩部分的用法都不正確。) –

回答

1

假設您要命名結果列20120501,2012050220120503,您使用的是單引號而不是雙引號。將您的查詢改爲

SELECT EQPID, " + 
" DECODE(CUTOFF_DATE, '20120501', SUM(TKINQTY))\"20120501\", " + 
" DECODE(CUTOFF_DATE, '20120502', SUM(TKINQTY))\"20120502\", +... 
--            ^^  ^^ 

解決問題。請注意,由於查詢字符串位於C#字符串內部,因此需要使用反斜槓轉義雙引號。

+0

Thanks dasblinkenlight。 =) – QKWS

相關問題