[英]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.