【问题标题】:MYSQL StoredProcedure Insert IssuesMYSQL 存储过程插入问题
【发布时间】:2015-10-27 12:03:22
【问题描述】:

我有一个存储过程,我想在其中插入一个学生,插入一个监护人,然后从每个人中获取 Id 并将一条记录插入到关联表中。

以下是我正在使用的代码,但出现以下错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 40 行的 'SET @studentId = LAST_INSERT_ID() INSERT INTO TblPersons ( firstName, lastName' 附近使用正确的语法

创建过程usp_InsertStudentAndGuardian(
IN p_firstName VARCHAR(45),
IN p_lastName VARCHAR(45),
IN p_gender VARCHAR(1),
在 p_birthDate 日期,
在 p_joinDate 日期,
IN p_isActive BIT,
在 p_isUnderAge 位,
IN p_gFirstName VARCHAR(45),
IN p_gLastName VARCHAR(45),
IN p_gGender VARCHAR(1),
在 p_gBirthDate 日期,
在 p_gJoinDate 日期,
IN p_gIsActive BIT,
在 p_gIsUnderAge 位,
IN p_personType INT
)
开始

插入 TblPersons
(
名字,
姓氏,
性别,
出生日期,
加入日期,
是活跃的,
isUnderAge
)
价值观
(
p_fistName,
p_姓氏,
p_gender,
p_birthDate,
p_joinDate,
p_isActive,
p_isUnderAge
)
SET @studentId = LAST_INSERT_ID()
插入 TblPersons
(
名字,
姓氏,
性别,
出生日期,
加入日期,
是活跃的,
isUnderAge
)
价值观
(
p_g名字,
p_g姓氏,
p_g性别,
p_g出生日期,
p_g加入日期,
p_gIsActive,
p_gIsUnderAge
)
SET @guardianId = LAST_INSERT_ID()

插入 AtbStudentsGuardians
(@studentId, @guardianId)

插入 AtbPersonsPersonTypes
(@studentId, p_personType);

结束//

【问题讨论】:

  • 添加;在每个语句之后

标签: mysql stored-procedures insert


【解决方案1】:

使用; 终止每个 SQL 语句,否则它将被视为单个语句,如下所示

INSERT INTO TblPersons
(
firstName,
lastName,
.......
)
VALUES
(
p_fistName,
p_lastName,
......
);
SET @studentId := LAST_INSERT_ID();

再次,我认为您的代码行如下

SET @studentId = LAST_INSERT_ID(); <------ LINE 40

应该是

SET @studentId := LAST_INSERT_ID();

【讨论】:

  • 做到了!非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2014-08-17
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
相关资源
最近更新 更多