create view f as select 1 as "f" from dual
select f from f
这显示错误如何使用列名检索数据
答案 0 :(得分:3)
您已将列名称声明为"f"
,因此列名称将作为f
存储在数据库中,而不是F
,如果您没有这样做,则默认为create or replace view f as select 1 as "f", 2 as f from dual;
select table_name, column_name from user_tab_cols where table_name = 'F';
TABLE_NAME COLUMN_NAME
------------------------------ ------------------------------
F f
F F
。在它周围加上双引号。
您需要完全按照您创建的列来引用该列 - 即。用双引号围绕它。双引号告诉Oracle完全按类型传递标识符名称,而不是将所有内容转换为大写(这是默认值)。
以下演示了有关视图列的元数据如何存储在字典中:
{{1}}
这就是为什么很难让你的标识符区分大小写的原因 - 你需要再用双引号引用它们。这样的痛苦......!