Mysql 存储过程无法识别参数。我的代码有什么问题?

Mysql 存储过程无法识别参数。我的代码有什么问题?,mysql,sql,database,database-design,mysql-workbench,Mysql,Sql,Database,Database Design,Mysql Workbench,我正在创建一个存储过程,将数据插入三个不同的表中。 这是我的密码: /*------------------------- Procedure for owner to submit his property -------------------------*/ DELIMITER // CREATE PROCEDURE SubmitProperty ( IN input_property_owner_id INT, IN input_property_type_id INT,

我正在创建一个存储过程,将数据插入三个不同的表中。 这是我的密码:

/*------------------------- 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和值之间区域的第三次插入中出现错误。 以下是错误消息的图片: 你们能帮我弄清楚吗?
谢谢

是不是因为您试图插入两列,但只选择了一列

INSERT INTO survey_question_answer (survey_id, question_id)
SELECT property_type_question.question_id

是否因为您试图插入到两列中,但只选择了一列

INSERT INTO survey_question_answer (survey_id, question_id)
SELECT property_type_question.question_id

调查id是否为标识列?如果否,则需要从测量表中引入测量id,并将其添加到select子句中:

INSERT INTO survey_question_answer (survey_id , question_id)
SELECT survey.id, property_type_question.question_id
FROM property_type_question
//Join here with your survey table
WHERE property_type_question.property_type_id = input_property_type_id;

调查id是否为标识列?如果否,则需要从测量表中引入测量id,并将其添加到select子句中:

INSERT INTO survey_question_answer (survey_id , question_id)
SELECT survey.id, property_type_question.question_id
FROM property_type_question
//Join here with your survey table
WHERE property_type_question.property_type_id = input_property_type_id;

在同一个查询中,您有select where和select values。挑一个。此外,在插入两列时,“选择”部分仅选择一列。是否尝试更改参数名称?@AderbalFarias是的,我尝试过。我想它检查了错误类型,但仍然给了我一个错误。无法识别参数不正确。请仔细阅读:意外与未知不同。尽管workbench的解析器中有一个bug,但这并不奇怪。@insert查询同时使用select子句和values子句。如果必须的话。因此,该语句的格式不正确,解析器拒绝该语句是正确的。它可能提供了更好的诊断,但准确诊断错误代码的错误是相当困难的。在同一个查询中,您可以同时选择where和value。挑一个。此外,在插入两列时,“选择”部分仅选择一列。是否尝试更改参数名称?@AderbalFarias是的,我尝试过。我想它检查了错误类型,但仍然给了我一个错误。无法识别参数不正确。请仔细阅读:意外与未知不同。尽管workbench的解析器中有一个bug,但这并不奇怪。@insert查询同时使用select子句和values子句。如果必须的话。因此,该语句的格式不正确,解析器拒绝该语句是正确的。它可能提供了更好的诊断,但准确诊断错误代码的错误是相当困难的。