INSERT语句中出现“此处不允许列”错误

时间:2012-05-08 15:18:50

标签: sql oracle

我创建了这个名为LOCATION的表     通过这样做:

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

当我尝试在表格中添加一些日期时,它无法正常显示错误

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

错误说

  这里不允许

11 个答案:

答案 0 :(得分:45)

你在第一个值附近缺少引号,它应该是

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

顺便提一下,出于可读性,可维护性和健壮性的原因,建议您明确在INSERT中指定列名,即

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

答案 1 :(得分:4)

有一段时间,在执行插入查询时,我们面临:

  

此处不允许使用列

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

试试这个:

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/

答案 2 :(得分:3)

像斯卡弗曼说的那样 - 你缺少引号。 始终在将值传递给 varchar2 时使用引号

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

所以一个(')启动字符串,第二个(')关闭它。

但是如果你想在一个字符串中添加一个引号,例如:

  

我父亲告诉我:'你必须勇敢,儿子'。

您必须使用三重引号符号,如:

  

'我的父亲告诉我:''你必须勇敢,儿子'。'

*添加引用方法可能因不同的数据库引擎而异

答案 3 :(得分:1)

您错过的是邮政编码中的const char*,因为它是" "

有两种插入方式。

创建表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,...);

答案 4 :(得分:1)

INSERT INTO LOCATION VALUES(PQ95VM,'HAPPY_STREET','FR ANCE&#39);

不正确,因为您的第一个参数POSTCODE的类型为VARCHAR(10)。你应该使用 ' '

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

答案 5 :(得分:0)

如果我们在输入变量名时出现拼写错误,则会出现此错误。 就像在存储过程中一样,我有变量名x,在我的insert语句中我正在使用

insert into tablename values(y);

这将抛出一个不允许的错误列。

答案 6 :(得分:0)

Scanner sc = new Scanner(System.in); 
String name = sc.nextLine();
String surname = sc.nextLine();
Statement statement = connection.createStatement();
String query = "INSERT INTO STUDENT VALUES("+'"name"'+","+'"surname"'+")";
statement.executeQuery();

concat 字符串时不要错过添加““ ----”'的功能。

答案 7 :(得分:0)

尝试使用varchar2代替varchar并使用:

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

答案 8 :(得分:0)

在插入数据时,我们必须使用字符串分隔符(' ')。而且,您在插入值时错过了它 (' '),这是您的错误消息的原因。代码修正如下:

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

答案 9 :(得分:0)

我在使用插入命令时也遇到了同样的错误。当我用单引号替换双引号时,它工作正常

答案 10 :(得分:0)

将双引号 (" ") 转换为单引号 (' ')

示例

如果你有这样的事情:

INSERT INTO clients (id, email, country)
VALUES (1, "john@gmail.com", "USA");

将其转换为:

INSERT INTO clients (id, email, country)
VALUES (1, 'john@gmail.com', 'USA');