Oracle SQL Developer:PL / SQL:ORA-00903:表名无效

时间:2011-05-03 17:12:02

标签: sql oracle plsql ora-06550

我收到此错误:

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会说“表名无效”?

3 个答案:

答案 0 :(得分:6)

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

撰写DELETE FROM book_copiesDELETE book_copies

答案 1 :(得分:1)

但你应该

DELETE FROM book_copies;

(没有*从Access借来)

答案 2 :(得分:0)

获取错误

放弃并改变

相同的错误:表名无效

但是表格在那里,请告诉解决方案。

查询:

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);

感谢。 问候。 Shweta