此 SQL 需要采用什么格式才能让 Oracle 接受它

本文关键字:Oracle 格式 SQL 什么 | 更新日期: 2023-09-27 18:32:44

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

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 给了我"消息=ORA-00907:缺少右括号">

此 SQL 需要采用什么格式才能让 Oracle 接受它

以下查询将在 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 正确解析查询所必需的。