MariaDB 存储过程 - 在 INSERT 语句中出现错误“缺少 SELECT”

Posted

技术标签:

【中文标题】MariaDB 存储过程 - 在 INSERT 语句中出现错误“缺少 SELECT”【英文标题】:MariaDB stored proc - Getting an error 'Missing SELECT' on INSERT statement 【发布时间】:2016-08-25 11:00:41 【问题描述】:

虽然我在 SQL Server 中创建了大量 proc,但我想开始使用 MariaDB,因此尝试在 mysql Workbench 中创建下面的简单 proc。

我不断收到一条错误消息,指出表名后的开头 '(' 缺少 SELECT:

DELIMITER $$
drop procedure if exists usp_AddSentEmail$$
CREATE PROCEDURE usp_AddSentEmail (in pSender varchar(36)
    ,in pTo varchar(1000)
    ,in pSubject varchar(100)
    ,in pBody varchar(10000)
    ,in pRecordDT datetime)
BEGIN
    INSERT INTO Emails('To','Subject','Body','Sender','RecordDT','Sent','SentDT') 
        VALUES (pTo,pSubject,pBody,pSender,pRecordDT,1,pRecordDT);

END$$

DELIMITER ;

也许我尝试了错误的谷歌搜索,但出现的只是分隔符错误。

【问题讨论】:

请注意,列不是字符串。 【参考方案1】:

从插入查询中的列名中删除引号:

INSERT INTO Emails(To,Subject,Body,Sender,RecordDT,Sent,SentDT) 
    VALUES (pTo,pSubject,pBody,pSender,pRecordDT,1,pRecordDT);

【讨论】:

哈。你是天才:-) 谢谢。我不得不把 To 和 Subject 放在反引号中,但其余的都很好。

以上是关于MariaDB 存储过程 - 在 INSERT 语句中出现错误“缺少 SELECT”的主要内容,如果未能解决你的问题,请参考以下文章

MariaDB删除重复记录性能测试

MySQL45讲insert语句锁的优化

MariaDB:启用 Java 存储过程

MariaDB10.2.6启用Mroonga存储引擎用于全文索引

在 MySQL/MariaDB 中创建存储过程时出错

MySQL重点内容:查询语句名称解析