MYSQL 存储过程插入问题
MYSQL StoredProcedure Insert Issues
我有一个存储过程,我想在其中插入一个学生,插入一个监护人,然后从每个人那里获取 ID,并将一条记录插入到一个 assoc table。
下面是我正在使用的代码,但出现以下错误:
1064 - 你的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 40
行 'SET @studentId = LAST_INSERT_ID() INSERT INTO TblPersons ( firstName, lastName' 附近使用的正确语法
创建过程usp_InsertStudentAndGuardian
(
在 p_firstName VARCHAR(45),
在 p_lastName VARCHAR(45),
在 p_gender VARCHAR(1),
在 p_birthDate 日期,
在 p_joinDate 日期,
在 p_isActive 位中,
在p_isUnderAge位,
在 p_gFirstName VARCHAR(45),
在 p_gLastName VARCHAR(45),
在 p_gGender VARCHAR(1),
在 p_gBirthDate 日期,
在 p_gJoinDate 日期,
在 p_gIsActive 位中,
在 p_gIsUnderAge 位中,
IN p_personType INT
)
开始
插入 TblPersons
(
名字,
姓氏,
性别,
生日,
加入日期,
活跃,
未成年
)
值
(
p_fistName,
p_lastName,
p_gender,
p_birthDate,
p_joinDate,
p_isActive,
p_isUnderAge
)
SET @studentId = LAST_INSERT_ID() <------ 第 40 行
插入 TblPersons
(
名字,
姓氏,
性别,
生日,
加入日期,
活跃,
未成年
)
值
(
p_gFirstName,
p_gLastName,
p_gGender,
p_gBirthDate,
p_gJoinDate,
p_gIsActive,
p_gIsUnderAge
)
SET @guardianId = LAST_INSERT_ID()
插入 AtbStudentsGuardians
(@studentId, @guardianId)
插入 AtbPersonsPersonTypes
(@studentId, p_personType);
结束//
用 ;
终止每个 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();
我有一个存储过程,我想在其中插入一个学生,插入一个监护人,然后从每个人那里获取 ID,并将一条记录插入到一个 assoc table。
下面是我正在使用的代码,但出现以下错误:
1064 - 你的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 40
行 'SET @studentId = LAST_INSERT_ID() INSERT INTO TblPersons ( firstName, lastName' 附近使用的正确语法创建过程usp_InsertStudentAndGuardian
(
在 p_firstName VARCHAR(45),
在 p_lastName VARCHAR(45),
在 p_gender VARCHAR(1),
在 p_birthDate 日期,
在 p_joinDate 日期,
在 p_isActive 位中,
在p_isUnderAge位,
在 p_gFirstName VARCHAR(45),
在 p_gLastName VARCHAR(45),
在 p_gGender VARCHAR(1),
在 p_gBirthDate 日期,
在 p_gJoinDate 日期,
在 p_gIsActive 位中,
在 p_gIsUnderAge 位中,
IN p_personType INT
)
开始
插入 TblPersons
(
名字,
姓氏,
性别,
生日,
加入日期,
活跃,
未成年
)
值
(
p_fistName,
p_lastName,
p_gender,
p_birthDate,
p_joinDate,
p_isActive,
p_isUnderAge
)
SET @studentId = LAST_INSERT_ID() <------ 第 40 行
插入 TblPersons
(
名字,
姓氏,
性别,
生日,
加入日期,
活跃,
未成年
)
值
(
p_gFirstName,
p_gLastName,
p_gGender,
p_gBirthDate,
p_gJoinDate,
p_gIsActive,
p_gIsUnderAge
)
SET @guardianId = LAST_INSERT_ID()
插入 AtbStudentsGuardians
(@studentId, @guardianId)
插入 AtbPersonsPersonTypes
(@studentId, p_personType);
结束//
用 ;
终止每个 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();