【发布时间】:2015-07-03 09:51:32
【问题描述】:
我想用 c# 从 Oracle 数据库中获取数据。问题是名为“DATE”和“HOUR”的两列是 SQL/Oracle 表达式。
这是我的查询命令:
command.CommandText = @"SELECT BOXID, PUMP_BIT, DATE, HOUR, RUN_DURATION, POWER_ONS FROM PUMP_AGG_HOURLY WHERE BOXID = " + tb_BoxIDAktuell.Text + " AND PUMP_BIT = " + BitPumpe1 + " ORDER BY DATE, HOUR";
为了测试,我为 DATE 和 HOUR 列加上引号,并且 SQL 语句在 Oracle SQL Developer 中运行:
SELECT BOXID, PUMP_BIT, "DATE", "HOUR", RUN_DURATION, POWER_ONS FROM PUMP_AGG_HOURLY WHERE BOXID = '4' AND PUMP_BIT = '1' ORDER BY "DATE", "HOUR";
在 C# 中,我添加了双引号,但语句给了我错误
command.CommandText = @"SELECT BOXID, PUMP_BIT, ""DATE"", ""HOUR"", RUN_DURATION, POWER_ONS FROM TPT2000_PUMP_AGG_HOURLY WHERE BOXID = " + tb_BoxIDAktuell.Text + " AND PUMP_BIT = " + BitPumpe1 + " AND DATE BETWEEN to_date('" + Start + "','dd/mm/yyyy hh24:mi:ss') and to_date('" + Ende + "','dd/mm/yyyy hh24:mi:ss') ORDER BY ""DATE"", ""HOUR""";
ORA-00936 缺少表达式
我认为这是因为 ORDER BY DATE, HOUR 是 SQL 表达式。我试过ORDER BY PUMP_AGG_HOURLY.DATE, PUMP_AGG_HOURLY.HOUR,但得到了同样的错误。
我该如何解决这个问题?谢谢
【问题讨论】:
-
首先这些不是连接字符串,而是sql命令。
-
你试过把列名放在方括号里吗? [列](并删除“)
-
只要你有 2 个
" " " "试试这个\"\"DATE\"\", \"\"HOUR\"\" -
@GuruprasadRao 给我错误
ORA-01741: illegal zero-length identifier -
@WraithNath 也给了我
ORA-00936 missing expression