【问题标题】:ORA-00904: "FNAME": invalid identifierORA-00904: "FNAME": 无效标识符
【发布时间】:2017-10-10 10:01:50
【问题描述】:

我有一个表 MYTAB,其中包含以下列名称、联系人和等级。现在我运行以下命令

alter table MYTAB rename column "name" to "fname";
alter table MYTAB add lname varchar(10);
update MYTAB set lname='hay'where fname='rick'

运行最后一条命令后出现以下错误

第 1 行错误:ORA-00904:“FNAME”:无效标识符``

【问题讨论】:

  • 为什么有时会分隔列名,有时却没有? ("fname"fname。)"fname"是小写,而fname转换为大写FNAME...
  • 我敢打赌,您将列文字命名为“fname”而不是 fname。 The oracle syntax 似乎建议您不需要在新列名周围加上引号。第一列重命名后你检查过表格吗?
  • 很确定" 有问题。您的数据库中列的名称是什么?
  • 我的表看起来像这样 fname MOB GR LNAME ---------- ---------- -- ---------- rick 123123 A 天赋 123456 b 新 123456 c 旧 123456 c 其他 123456 b 东西 123456 桌面 123456 b 文本 123456 d
  • "fname"fname 的名称不同。一旦你开始使用那些可怕的双引号,你就必须总是使用它们。详见手册:docs.oracle.com/database/121/SQLRF/…

标签: sql oracle


【解决方案1】:

分隔标识符"fname"是小写的,但fname转换为大写FNAME

保持一致,要么始终使用分隔标识符(始终"fname"),始终使用常规标识符(始终使用fname,不带双引号。)

我个人会选择常规标识符,只需使用fname

【讨论】:

  • 你能简单解释一下吗
  • @Upasana 。 . .如果在定义列时使用双引号,则在引用它时使用双引号。但是,我建议定义所有不带双引号的标识符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
  • 2022-01-22
  • 2011-08-27
  • 2011-04-21
  • 2019-06-29
  • 2013-10-20
  • 2017-12-29
相关资源
最近更新 更多