2012-05-08 65 views
16

我做这个创造了这个表称为位置 :在INSERT语句错误“这里不允许列”

CREATE TABLE LOCATION(
POSTCODE VARCHAR(10) PRIMARY KEY, 
STREET_NAME VARCHAR(20), 
CITY VARCHAR(20)); 

,当我尝试在表中添加一些日期不起作用说有错误

INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FRANCE'); 

错误是说

列这里不允许

+3

您应该使用支持语法高亮显示的编辑器。互联网提供了许多免费的。只要看看你提出的问题的方式:你的布卢姆马上就显而易见了。 – APC

回答

36

你错过了周围的第一个值引号,它应该是

INSERT INTO LOCATION VALUES('PQ95VM', 'HAPPY_STREET', 'FRANCE'); 

顺便说一句,你会很好,建议在INSERT明确指定的列名,用于可读性,可维护性的原因和健壮性,即

INSERT INTO LOCATION (POSTCODE, STREET_NAME, CITY) VALUES ('PQ95VM', 'HAPPY_STREET', 'FRANCE'); 
+0

感谢它现在正在工作 – john

+1

+1特别是对于实际命名列的建议,它是一个SQL反模式,用于暗示插入中的列,并且在数据库结构发生变化时确实会有一些不幸的结果。 – HLGEM

-2

如果我们在输入变量名称时出现了一些拼写错误,这个错误就会出现。 就像在存储过程中,我有变量名x,以及在我的INSERT语句我使用

insert into tablename values(y); 

它会抛出这里不允许出错列。

+0

我不确定你为什么被低估。这是我以前也犯的一个常见错误。 – forcedfx

2

Like Scaffman says - You are missing quotes。 始终当你是一个值传递给VARCHAR2使用引号

INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE'); 

所以一个()开始的字符串,第二个()关闭它。

但是,如果你想报价符号添加到字符串例如:

我父亲告诉我:'你一定要勇敢,儿子。

你必须使用像一个三重报价代号:

“我的父亲告诉我:‘“”’你一定要勇敢,儿子

*加引号的方法可以在不同的数据库引擎

1

改变你错过了什么是邮政编码" ",因为它是一个varchar

有两种插入方式。

当您创建表Table created.并在创建它之后添加一行时,可以使用以下方法。

INSERT INTO table_name 
VALUES (value1,value2,value3,...); 

1 row created.

你已加入这么多表,或者它被保存,并且您重新打开它,你需要提及的表的列名太否则会显示同样的错误。

ERROR at line 2: 
ORA-00984: column not allowed here 


INSERT INTO table_name (column1,column2,column3,...) 
VALUES (value1,value2,value3,...); 

1 row created.

3

一段时间以来,在执行插入查询,我们正面临着:

列这里不允许

错误。由于字符串参数中可能缺少引号。在字符串params中添加引号并尝试执行。

尝试这种情况:

INSERT INTO LOCATION VALUES('PQ95VM','HAPPY_STREET','FRANCE'); 

INSERT INTO LOCATION (ID, FIRST_NAME, LAST_NAME) VALUES('PQ95VM','HAPPY_STREET','FRANCE'); 

http://www.drtuts.com/oracle-error-column-not-allowed-here/

0

INSERT INTO位置值(PQ95VM, 'HAPPY_STREET', '法国');

不正确,因为您的第一个参数POSTCODE的类型为VARCHAR(10)。你应该使用''。尝试插入位置值('PQ95VM','HAPPY_STREET','FRANCE');

相关问题