[英]Passing arguments in Stored Procedure
作为一项较大的任务,我正在尝试创建一个创建表的MySQL存储过程。 我想在过程调用中传递表的名称。
CREATE PROCEDURE SP_CREATE_TABLE(IN tableName VARCHAR(100))
SET @table_name = tableName;
SET @query = CONCAT('CREATE TABLE IF NOT EXISTS meta_', @table_name, '(`created` DATETIME, `modified` DATETIME, `enabled` TINYINT(1) DEFAULT 1);');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
然后有电话:
CALL SP_CREATE_TABLE('data');
如果我对`@table_name进行硬编码,则该过程有效,但是拒绝采用传递的参数。
我正在使用MySQL6。是否有输入?
尝试这个:
DELIMITER $$
CREATE PROCEDURE SP_CREATE_TABLE(IN tableName VARCHAR(100))
BEGIN
SET @table_name = tableName;
SET @query = CONCAT('CREATE TABLE IF NOT EXISTS meta_', @table_name, '(`created` DATETIME, `modified` DATETIME, `enabled` TINYINT(1) DEFAULT 1);');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.