我依次尝试了以下所有内容:
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给了我编译时错误:“; expected”(在“VALUE”上)
3,4和5给了我,“消息= ORA-00907:缺少右括号”
答案 0 :(得分: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在评论中指出的那样,围绕VALUE
的双引号实际上并不是Oracle正确解析查询所必需的。