尝试创建具有2个插入的存储过程

本文关键字:插入 存储过程 2个 创建 | 更新日期: 2023-09-27 18:15:40

我对存储过程非常陌生。我正在尝试创建一个存储过程,将记录插入到两个不同的表中,但是我遇到了问题。

我正在用c#编程,并使用。net连接器连接MySQL。

我有两个表,prop_detailsprop_accountprop_details表有一个自增列(id), prop_account表有一个匹配prop_details.id的外键prop_id

下面的伪代码解释了存储过程应该做什么:

insert form elements into table prop_details
insert relationship of prop_details.id into table prop_account

下面是我尝试创建的存储过程

DROP PROCEDURE IF EXISTS `InsertPropertybyClientID`;
CREATE DEFINER = `root`@`localhost` PROCEDURE `InsertPropertybyClientID`(IN 'in_account' int(11), IN `in_title` varchar(100), IN 'in_type' int(2), IN 'in_active' tinyint(1), IN 'in_created' datetime)
BEGIN
INSERT INTO prop_details 
    (prop_title, prop_type, prop_active)
VALUES 
    (in_title, in_type, in_active, in_created);
INSERT INTO prop_account
    (prop_id, acnt_id)
VALUES
    (LAST_INSERT_ID(), in_account);
END;

当尝试保存存储过程时,我得到这个错误

1064 -你有一个错误的SQL语法;检查与你的MySQL服务器版本对应的手册,以便在"'in_account' int(11), 'in_title' varchar(100), 'in_type' int(2), 'in_ac' at line 1"附近使用正确的语法

我做错了什么?

尝试创建具有2个插入的存储过程

实际上错误细节表达了错误:

IN 'in_account' int(11), IN 'in_title' varchar(100), IN 'in_type' int(2), IN 'in_ac' at line 1

在MySQL关于标识符的参考文档中,它声明:

标识符引号字符是反打号(" ' "):

如果启用了ANSI_QUOTES SQL模式,还允许在双引号内引用标识符:

这意味着除非启用ANSI_QUOTES SQL模式,否则不应该使用单引号或双引号来表示标识符。您可以使用backtick('),也可以省略backtick(如果您使用的单词不是保留词)。