0

我正在为我的数据库使用 Microsoft Visual Studio C# 2005 和 Oracle。我有一段带有 SQL 语句的代码。

这是代码:

 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 上尝试它时,它运行没有任何错误。

多谢。=)

4

1 回答 1

1

假设您要命名 result 2012050120120502和的列20120503,您使用的是单引号而不是双引号。将您的查询更改为

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

解决问题。请注意,由于查询字符串位于 C# 字符串中,因此需要使用反斜杠对双引号进行转义。

于 2013-05-17T02:19:03.487 回答