SQL INSERT INTO 多行 [重复]

Posted

技术标签:

【中文标题】SQL INSERT INTO 多行 [重复]【英文标题】:SQL INSERT INTO multiple rows [duplicate] 【发布时间】:2021-11-19 00:14:54 【问题描述】:

所以,我在 Oracle Apex 上收到一个错误,上面写着 'ORA-00933: SQL command not proper ending' 。据我所知,我的命令中没有语法错误,如果我遗漏了什么并且有人可以帮助我,那就太好了。

我创建表的命令:

CREATE TABLE details
(
    ssn INTEGER NOT NULL,
    gender VARCHAR(255),
    hair VARCHAR(255)
);

我向表中添加行的命令:

INSERT INTO details(ssn, gender, hair) 
VALUES 
    (112, 'male', 'blonde'), 
    (132, 'female', 'blonde'),
    (882, 'male', 'brown'), 
    (542, 'female', 'black'), 
    (662, 'male', 'red') ;

【问题讨论】:

作为一个侧面观察,您应该使用 VARCHAR2 而不是 VARCHAR,oracle 仅将其识别为向后兼容。还有——真的需要 255 个字符来表示性别吗?一个人会这样做(“M”或“F”)。 255的头发颜色?您可能认为这无关紧要,因为只会存储实际的数据长度。但这忽略了任何查询都必须为最大可能大小预先分配内存。在某些情况下,这会导致内存不足错误。 这能回答你的问题吗? Oracle SQL Language Reference: INSERT 【参考方案1】:

据我所知,我的命令中没有语法错误

其实是有的。就 Oracle 而言,您使用的语法无效。


Oracle Apex 上的“SQL 命令”,一次只需要一个命令

实际上,没有。您可以运行其中的几个,只是不是作为 SQL 而是 PL/SQL,这意味着您必须将它们包含在 BEGIN-END 块中。看看截图:

但是,请注意,并非所有东西都可以这样运行。例如,DDL 需要动态 SQL。

【讨论】:

【参考方案2】:

原来我在 Oracle Apex 上使用了“SQL 命令”,它要求一次只运行一个命令,因此命令未正确结束错误。

【讨论】:

oracle 也不支持 ***.com/questions/39576/…

以上是关于SQL INSERT INTO 多行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将多行插入多个表而不重复“INSERT INTO”

INSERT INTO .. ON DUPLICATE KEY更新多行记录

如何在不重复声明的“INSERT INTO dbo.Blah”部分的情况下插入多行?

INSERT INTO .. ON DUPLICATE KEY更新多行记录

SQL INSERT INTO 语法 [重复]

SQL INSERT INTO SUBFORM from QUERY in ms access