更改Oracle表名称

Ant*_*yrd 4 sql alter-table oracle11g table-rename

我正在尝试在oracle中更改表名.我首先运行此脚本来声明表

CREATE TABLE CUSTOMER
(
  C_ID NUMBER(6,0),
  C_LAST VARCHAR2(25),
  C_FIRST varchar2(25),
  C_MI char(1),
  C_DOB DATE,
  C_ADDRESS varchar2(100),
  C_CITY varchar2(35),
  C_STATE char(2),
  C_ZIP varchar2(10),
  C_DPHONE varchar2(12),
  C_EPHONE varchar2(12),
  C_USERID varchar2(20),
  C_PASSWORD VARCHAR2(30),
  CONSTRAINT CUSTOMER_PK PRIMARY KEY(C_ID)
);

CREATE TABLE ORDER_SOURCE
(
  OS_ID NUMBER(6),
  OS_DESC varchar2(255),
  CONSTRAINT ORDER_SOURCE_PK PRIMARY KEY(OS_ID)
);

CREATE TABLE ORDERS
(
  O_ID NUMBER(6),
  O_DATE DATE,
  O_METHPMT varchar2(25),
  C_ID NUMBER(6),
  OS_ID NUMBER(6),
  CONSTRAINT ORDERS_PK PRIMARY KEY(O_ID),
  CONSTRAINT ORDERS_CUSTOMER_FK FOREIGN KEY(C_ID) REFERENCES CUSTOMER(C_ID),
  CONSTRAINT ORDERS_ORDER_SOURCE_FK FOREIGN KEY(OS_ID) REFERENCES ORDER_SOURCE(OS_ID)
);
Run Code Online (Sandbox Code Playgroud)

它运行正常,然后我尝试运行

alter table ORDERS
rename to ORDER;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

从命令的第1行开始出错:alter table ORDERS重命名为ORDER错误报告:SQL错误:ORA-00903:无效的表名00903. 00000 - "无效的表名"*原因:
*操作:

Vla*_*mir 35

语法" RENAME TABLE tab_old TO tab_new"不正确.
正确的语法:" RENAME tab_old TO tab_new".
单词"TABLE"不应出现在声明中.

  • 这对我有用!当然希望[Oracle文档](http://docs.oracle.com/cd/E17952_01/refman-5.1-en/rename-table.html)没有告诉我们语法是`RENAME TABLE ... (7认同)

小智 5

order 是 oracle 中的保留字,因此您不能将其用作表名。您可以尝试使用双引号(“order”)进行转义,但这不是一个好习惯