Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Oracle客户端需要在列名周围加括号吗?_C#_Asp.net_Sql_Oracle - Fatal编程技术网

C# Oracle客户端需要在列名周围加括号吗?

C# Oracle客户端需要在列名周围加括号吗?,c#,asp.net,sql,oracle,C#,Asp.net,Sql,Oracle,我最近被要求将我们的MSSQL数据库迁移到Oracle数据库 我使用传统的方式执行sql查询 不知为什么,Oracle要求我在列名周围加括号(为什么?) 有解决办法吗 以下代码将因括号而失败(用于在MSSQL下正常工作) 相反,在VS服务器资源管理器中,最后一个查询被“转换”为 SELECT "level_1", "element_id" FROM "tnuot_menu_tree" WHERE ("level_1" IN (SELECT "level_1" FROM "tnuot_me

我最近被要求将我们的MSSQL数据库迁移到Oracle数据库

我使用传统的方式执行sql查询

不知为什么,Oracle要求我在列名周围加括号(为什么?) 有解决办法吗

以下代码将因括号而失败(用于在MSSQL下正常工作)

相反,在VS服务器资源管理器中,最后一个查询被“转换”为

SELECT "level_1", "element_id"
FROM "tnuot_menu_tree"
WHERE ("level_1" IN
    (SELECT "level_1" FROM "tnuot_menu_tree" mt
     WHERE ("element_id" IN
         (SELECT "element_tree_id" FROM "tnuot_menu_elements"
          WHERE (UPPER("element_link") LIKE '%DEFAULT.ASPX'))))) 
AND ("level_2" = 0) AND ("level_3" = 0)
这很有效


关于如何摆脱这项讨厌的任务,你有什么想法吗?

也许,括号不是必需的;这是双引号。这与SQL Server使用方括号的做法相同,在这里可能需要方括号,因为表是用小写名称创建的,但没有双引号,Oracle会自动将名称转换为大写。

第一个和第二个查询之间的主要区别是引号(而不是括号)。不需要额外的括号。它们似乎是VS服务器资源管理器的奇怪产物

与普遍的看法相反,甲骨文是区分大小写的。列名称
level_1
level_1
不同。若列名和表名都是大写,那个么大小写就无关紧要了,因为Oracle将SQL语句中所有不带引号的标识符都转换为大写


但是,如果列名和表名使用小写字母,则必须将列名用双引号引起来,以保留正确的大小写。

如果执行第一个代码块,是否有效?@HansKesting,否-我得到“ORA-00942:表或视图不存在”。我认为创建表时区分大小写,因此您需要引号来查询它,
“tnuot\u menu\u elements”
确保区分大小写。sad这是
创建表“tnuot\u menu\u elements”的结果。
SELECT "level_1", "element_id"
FROM "tnuot_menu_tree"
WHERE ("level_1" IN
    (SELECT "level_1" FROM "tnuot_menu_tree" mt
     WHERE ("element_id" IN
         (SELECT "element_tree_id" FROM "tnuot_menu_elements"
          WHERE (UPPER("element_link") LIKE '%DEFAULT.ASPX'))))) 
AND ("level_2" = 0) AND ("level_3" = 0)