【发布时间】:2019-04-25 05:19:21
【问题描述】:
我在mysql 中有以下stored procedure:
DELIMITER $$
CREATE DEFINER=`user`@`localhost` PROCEDURE `insert_patient`(IN `name` VARCHAR(45), IN `surname` VARCHAR(45), IN `middle_name` VARCHAR(45), IN `patient_gender` VARCHAR(15), IN `patient_weight` VARCHAR(15), IN `patient_height` VARCHAR(15), IN `patient_ethnic_origin` VARCHAR(45))
NO SQL
BEGIN
BEGIN
INSERT
INTO
patient(
name,
surname,
middle_name
)
VALUES(
name,
surname,
middle_name
) ;
SELECT
LAST_INSERT_ID() AS patient_local_id;
END;
BEGIN
INSERT
INTO
demographics(
patient_id,
gender,
weight,
height,
ethnic_origin
)
VALUES(
patient_local_id,
patient_gender,
patient_weight,
patient_height,
patient_ethnic_origin
) ;
END;
END$$
DELIMITER ;
当我尝试从 phpmyadmin 执行此存储过程时,我收到以下错误:
Unrecognized keyword. (near "ON" at position 25)
SQL query: Edit Edit
SET FOREIGN_KEY_CHECKS = ON;
MySQL said: Documentation
#2014 - Commands out of sync; you can't run this command now
【问题讨论】:
-
错误消息中的行在您的存储过程中没有出现,至少在您实际向我们展示的代码中没有出现。但是,你应该使用
SET FOREIGN_KEY_CHECKS = 1。 -
@TimBiegeleisen 我是否必须在我的存储过程代码中包含
SET FOREIGN_KEY_CHECKS = 1? -
嗯,你已经在你的过程代码中这样做了吗?错误信息似乎是。
-
@TimBiegeleisen 我的 proc 代码中没有它。也许这是默认情况下发生的事情?
-
SET FOREIGN_KEY_CHECKS = ON;不是有效的 MySQL AFAIK。一定有什么东西在插入此代码。
标签: mysql stored-procedures phpmyadmin