带有Insert语句的Oracle 11g _ ORA-00904错误消息

时间:2016-10-05 14:55:51

标签: oracle oracle11g

我创建了一个简单的表:

 CREATE TABLE "ADVUPGRD"."GL_CAMPUSEMAILS" 
 ("Campus" VARCHAR2(2 CHAR), "SEND_TO" VARCHAR2(60 CHAR), "SEND_CC"    
   VARCHAR2(250 CHAR), "SEND_BCC" VARCHAR2(60 CHAR))

表已经创建了,我可以从gl_campusemails中选择*,它会给我一个空行,因为我还没有填充这个表。 当我填写表格时,我使用了这个:

INSERT INTO GL_CAMPUSEMAILS (Campus, Send_To, Send_CC, Send_BCC)
VALUES('CP', 'as@gmail.com', 'test@yahoo.com', 'test2@gmail.com');

但我收到此错误消息:

  

从命令行中的第8行开始出错 -
  插入GL_CAMPUSEMAILS(校园,Send_To,Send_CC,Send_BCC)      价值观(' CP',' as @gmail.com',' test@yahoo.com',' test2@gmail.com')
  命令行出错:8列:56   错误报告 -   SQL错误:ORA-00904:" SEND_BCC":无效的标识符   00904. 00000 - "%s:无效标识符"   *原因:
  *操作:

我用Google搜索并发现了很多帖子,但它们主要与select语句中保留字的使用有关。 我不认为我在这里使用的专栏属于任何保留字。我在这里做错了什么

1 个答案:

答案 0 :(得分:1)

如果在创建表时使用双引号,则列名称将与键入时完全相同,区分大小写;因此,你插入应该是:

INSERT INTO GL_CAMPUSEMAILS(
                            "Campus",
                            "SEND_TO",
                            "SEND_CC",
                            "SEND_BCC"
                           )
     VALUES (
             'CP',
             'as@gmail.com',
             'test@yahoo.com',
             'test2@gmail.com'
            );

如果您创建没有引号的表,这将正常工作

CREATE TABLE GL_CAMPUSEMAILS
(
    Campus                                  VARCHAR2(2 CHAR),
    SEND_TO                                 VARCHAR2(60 CHAR),
    SEND_CC                                 VARCHAR2(250 CHAR),
    SEND_BCC                                VARCHAR2(60 CHAR)
);

INSERT INTO GL_CAMPUSEMAILS(
                            Campus,
                            SEND_TO,
                            SEND_CC,
                            SEND_BCC
                           )
     VALUES (
             'CP',
             'as@gmail.com',
             'test@yahoo.com',
             'test2@gmail.com'
            );

请注意,不使用双引号,Oracle会考虑所有具有大写名称的对象;例如,"CAMPUS"campusCaMpUs将起作用,而"campus"则不会