2013-07-23 29 views
1

我有一个表名称为_VERSION_HISTORY截断此表时出现ORA-00911错误。 Oracle允许名称以下划线(_)开头,但在截断时引发错误。这是一个愚蠢的错误?ORA-00911:截断表时出现无效字符错误

+3

[非引号标识符必须以数据库字符集中的字母字符开头。](http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements008.htm) –

回答

5

甲骨文允许数据库对象名称开始以下划线:创建表时

SQL> create table _T34 (col1 number); 
create table _T34 (col1 number) 
      * 
ERROR at line 1: 
ORA-00911: invalid character 


SQL> 

所以,你必须使用双引号:

SQL> create table "_T34" (col1 number); 

Table created. 

SQL> 

做完,一旦你每次引用该对象时都必须使用双引号?

SQL> truncate table "_T34"; 

Table truncated. 

SQL> 

那么这是“一个愚蠢的错误”?是的,但是很可惜(或者谁决定使用双引号来规避Oracle的命名约定)。 Find out more

0

看起来你似乎已经尝试执行SQL语句并在其中包含一个特殊的章程。我不认为这是与截断命令。您可以用简单的Select选项替换截断并测试此场景。请注意,由于您使用的字体,特殊字符可能会显示为空格。

+0

有一个更简单的解释。看到我的答案。 – APC