这个SQL需要什么格式才能让Oracle接受它?

时间:2012-04-27 22:54:56

标签: c# sql winforms oracle quotes

我依次尝试了以下所有内容:

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:缺少右括号”

1 个答案:

答案 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正确解析查询所必需的。