首页 > 解决方案 > 如何将表作为参数发送到 MySQL 中的存储过程?

问题描述

我在 MySQL 中有一个存储过程,例如:

DELIMITER $$
CREATE PROCEDURE addIns(IN insCode VARCHAR(21), IN insName VARCHAR(21), IN stat BIT(1))
BEGIN
    INSERT INTO institution(institution.institution_code, institution.institution_name, institution.is_active) 
    VALUES (insCode, insName, stat);
END$$
DELIMITER ;

但我想要这样:

DELIMITER $$
CREATE PROCEDURE addIns(IN _institution)
BEGIN
    INSERT INTO institution(institution.institution_code, institution.institution_name, institution.is_active)
    VALUES (_institution.institution_code, _institution.institution_name, _institution.is_active);
END$$
DELIMITER ;

因为我想在 Java Spring App 中使用这个存储过程。我该如何提供?

我的直觉表是:

在此处输入图像描述

标签: mysqlsqlstored-proceduresinsert

解决方案


CREATE PROCEDURE addIns(IN _institution)
BEGIN
    @sql := CONCAT( 'INSERT INTO institution (institution_code, institution_name, is_active) SELECT institution_code, institution_name, is_active FROM ' , _institution);
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DROP PREPARE stmt;
END

推荐阅读