1

我依次尝试了以下所有方法:

1) // 就像在遗留代码中一样

ocmd.CommandText = "SELECT TRUNC(SYSDATE,''DD'') "VALUE" FROM DUAL";

2) // 添加@

ocmd.CommandText = @"SELECT TRUNC(SYSDATE,''DD'') "VALUE" FROM DUAL";

3) // 尝试单引号

ocmd.CommandText = "SELECT TRUNC(SYSDATE,''DD'') 'VALUE' FROM DUAL";

4) // 尝试两个单引号,例如 DD

ocmd.CommandText = "SELECT TRUNC(SYSDATE,''DD'') ''VALUE'' FROM DUAL";

5) // 试试@

ocmd.CommandText = @"SELECT TRUNC(SYSDATE,''DD'') ''VALUE'' FROM DUAL";

1和2给了我编译时错误:“;预期”(在“价值”上)

3、4 和 5 给了我,“Message=ORA-00907:缺少右括号”

4

1 回答 1

7

以下查询将在 Oracle 中工作:(sqlfiddle)

SELECT TRUNC(SYSDATE, 'DD') "VALUE" FROM DUAL

但是,要在 C# 中的常规字符串文字中写入双引号,您需要使用反斜杠对其进行转义:

ocmd.CommandText = "SELECT TRUNC(SYSDATE, 'DD') \"VALUE\" FROM DUAL";

如果出于某种原因您宁愿使用逐字字符串文字,那么您需要用另一个双引号转义一个双引号:

ocmd.CommandText = @"SELECT TRUNC(SYSDATE, 'DD') ""VALUE"" FROM DUAL";

注意:正如 Vash 在评论中指出的那样,VALUEOracle 正确解析查询实际上并不需要双引号。

于 2012-04-27T22:58:24.273 回答