簡體   English   中英

在存儲過程中傳遞參數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM