C# Oracle接受此SQL需要采用什么格式?

C# Oracle接受此SQL需要采用什么格式?,c#,sql,winforms,oracle,quotes,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 D

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

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

以下查询将在Oracle中运行:

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

ocmd.CommandText = "SELECT TRUNC(SYSDATE, 'DD') \"VALUE\" FROM DUAL";
如果出于任何原因,您更愿意使用逐字字符串文字,则需要用另一个双引号转义双引号:

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

注意:正如Vash在一篇评论中指出的那样,Oracle实际上不需要在值周围加双引号来正确解析查询。

以下查询将在Oracle中工作:

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

ocmd.CommandText = "SELECT TRUNC(SYSDATE, 'DD') \"VALUE\" FROM DUAL";
如果出于任何原因,您更愿意使用逐字字符串文字,则需要用另一个双引号转义双引号:

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

注意:正如Vash在一篇评论中指出的,Oracle要正确解析查询,实际上不需要在值周围加双引号。

好吧,我不是Oracle专家,但我猜:从DUAL中选择TRUNCSYSDATE,DD VALUE;根据您的错误消息。@MarkByers,我已经删除了您给出的答案。但保留的值应该在中。但我并不是100%认为解析会失败。@Vash:好的,我想你是对的。似乎它解析正确@然而,这些关键词应该避免使用或与其他关键词一起传递。顺便说一句,漂亮的页面sqlfiddle.com我仍然得到;我不是甲骨文专家,但我猜:从DUAL中选择TRUNCSYSDATE,DD value;根据您的错误消息。@MarkByers,我已经删除了您给出的答案。但保留的值应该在中。但我并不是100%认为解析会失败。@Vash:好的,我想你是对的。似乎它解析正确@然而,这些关键词应该避免使用或与其他关键词一起传递。顺便说一句,漂亮的页面sqlfiddle.com我仍然得到;当价值报价加倍时会出现这种情况。是的,这两种方法都有效;谢谢如果没有字符串、日期和浮动,编程就会容易得多-是的,这两个都有效;谢谢如果没有字符串、日期和浮动,编程就会容易得多-