此 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:缺少右括号">
以下查询将在 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 正确解析查询所必需的。