【发布时间】:2019-04-02 16:08:15
【问题描述】:
我正在创建一个存储过程来将数据插入三个不同的表中。
这是我的代码:
/*------------------------- Procedure for owner to submit his property -------------------------*/
DELIMITER //
CREATE PROCEDURE SubmitProperty (
IN input_property_owner_id INT,
IN input_property_type_id INT,
IN input_address VARCHAR(255),
IN input_zip_code VARCHAR(255),
IN input_area_m2 INT,
IN input_price_€ INT
)
BEGIN
INSERT INTO property (property_owner_id, property_type_id, address, zip_code, area_m2, price_€)
VALUES
(input_property_owner_id, input_property_type_id, input_address, input_zip_code, input_area_m2, input_price_€);
INSERT INTO survey (property_id, cas_eval_id, checksum_xxx)
VALUES
(property.id, 'CAS-XXX-YYYY', property.id % 1000);
INSERT INTO survey_question_answer (survey_id, question_id)
SELECT property_type_question.question_id
FROM property_type_question
WHERE property_type_question.property_type_id = input_property_type_id
VALUES
(survey.id, property_type_question.question_id);
END //
DELIMITER ;
前 2 个插入工作正常。
但是,我在第三次插入时遇到错误(在最后一个“FROM”和“VALUES”之间的区域周围)。
这是错误消息的图片:
大家能帮我解决这个问题吗?
谢谢!
【问题讨论】:
-
您在同一个查询中同时拥有
select where和values。选一个。此外,select部分在插入两列时仅选择一列。 -
您是否尝试过更改参数名称?
-
@AderbalFarias 是的,我有。我认为它改变了错误类型,但仍然给了我一个错误。
-
“无法识别参数”不正确。请准确阅读:“意外”与“未知”不同。恕我直言,尽管工作台的解析器中有一个错误。
-
@PaulSpiegel
insert查询同时使用select子句和values子句。如果必须是one or another。因此,该语句格式错误,解析器拒绝它是正确的。它可能提供了更好的诊断,但准确诊断格式错误的代码出了什么问题是相当困难的。
标签: mysql sql database database-design mysql-workbench