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

B. *_*non 1 c# sql oracle quotes winforms

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

1)//就像在遗留代码中一样

ocmd.CommandText = "SELECT TRUNC(SYSDATE,''DD'') "VALUE" FROM DUAL";
Run Code Online (Sandbox Code Playgroud)

2)//添加@

ocmd.CommandText = @"SELECT TRUNC(SYSDATE,''DD'') "VALUE" FROM DUAL";
Run Code Online (Sandbox Code Playgroud)

3)//尝试单引号

ocmd.CommandText = "SELECT TRUNC(SYSDATE,''DD'') 'VALUE' FROM DUAL";
Run Code Online (Sandbox Code Playgroud)

4)//尝试两个单引号,如DD

ocmd.CommandText = "SELECT TRUNC(SYSDATE,''DD'') ''VALUE'' FROM DUAL";
Run Code Online (Sandbox Code Playgroud)

5)//试试@

ocmd.CommandText = @"SELECT TRUNC(SYSDATE,''DD'') ''VALUE'' FROM DUAL";
Run Code Online (Sandbox Code Playgroud)

1和2给了我编译时错误:"; expected"(在"VALUE"上)

3,4和5给了我,"消息= ORA-00907:缺少右括号"

Mar*_*ers 7

以下查询将在Oracle中有效:(sqlfiddle)

SELECT TRUNC(SYSDATE, 'DD') "VALUE" FROM DUAL
Run Code Online (Sandbox Code Playgroud)

但是要在C#中的常规字符串文字中写一个双引号,你需要用反斜杠转义它:

ocmd.CommandText = "SELECT TRUNC(SYSDATE, 'DD') \"VALUE\" FROM DUAL";
Run Code Online (Sandbox Code Playgroud)

如果您因任何原因而宁愿使用逐字字符串文字,那么您需要使用另一个双引号来转义双引号:

ocmd.CommandText = @"SELECT TRUNC(SYSDATE, 'DD') ""VALUE"" FROM DUAL";
Run Code Online (Sandbox Code Playgroud)

注意:正如Vash在注释中指出的那样,VALUEOracle实际上并不需要使用双引号来正确解析查询.