【问题标题】:Oracle SQL Developer: PL/SQL: ORA-00903: invalid table nameOracle SQL Developer:PL/SQL:ORA-00903:无效的表名
【发布时间】:2011-05-03 17:12:02
【问题描述】:

我收到此错误:

Error starting at line 2 in command:
BEGIN
  DELETE * FROM book_copies;
  DELETE * FROM books;
  /* more code here */
END;
Error report:
ORA-06550: line 2, column 10:
PL/SQL: ORA-00903: invalid table name
ORA-06550: line 2, column 3:
PL/SQL: SQL Statement ignored
ORA-06550: line 3, column 10:
PL/SQL: ORA-00903: invalid table name
ORA-06550: line 3, column 3:
PL/SQL: SQL Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

这很荒谬,因为这两个表都存在于我的数据库中。我能做到:

SELECT * FROM books;

或者:

SELECT * FROM book_copies;

它们都有效。

为什么 Oracle SQL Developer 显示“无效的表名”?

【问题讨论】:

    标签: sql oracle plsql ora-06550


    【解决方案1】:

    DELETE 语句中,至少在Oracle 中,您不会列出列,FROM 是可选的。因此,当您DELETE * ... 时,它会尝试将星号解析为表名。请注意,如果您计算列数,第 10 列是星号,这是报告无效表名的位置。

    DELETE FROM book_copiesDELETE book_copies

    【讨论】:

      【解决方案2】:

      但你应该

      DELETE FROM book_copies;
      

      (没有 * 是从 Access 借来的)

      【讨论】:

        【解决方案3】:

        获取错误

        删除和更改

        同样的错误:无效的表名

        但是桌子在那里,请告诉解决方案。

        查询:

        ALTER TABLE [EXCLUDE_BC]
        DROP COLUMN [STATUS_BY_SITE] VARCHAR2(60 BYTE), [ALT_STATUS_BY_SITE] VARCHAR2(60 BYTE), [STATUS_BY_CONSOLIDATED] VARCHAR2(60 BYTE),[ALT_STATUS_BY_CONSOLIDATED] VARCHAR2(60 BYTE);
        
        ALTER TABLE [EXCLUDE_BC]
        ADD [STATUS_BY_SITE] VARCHAR2(60 BYTE), [ALT_STATUS_BY_SITE] VARCHAR2(60 BYTE), [STATUS_BY_CONSOLIDATED] VARCHAR2(60 BYTE),[ALT_STATUS_BY_CONSOLIDATED] VARCHAR2(60 BYTE);
        

        谢谢。 问候。 什维塔

        【讨论】:

          猜你喜欢
          • 2016-12-19
          • 2015-01-07
          • 2016-07-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-01
          • 2013-07-09
          相关资源
          最近更新 更多