2012-05-08 58 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');

相關問題