MySQL 过程语法
MySQL procedure syntax
你们中有人知道如何在 MySQL 过程中使用 VARCHAR 参数吗?
我尝试了以下方法:
DELIMITER $$
CREATE PROCEDURE `procedure_name` (IN name VARCHAR(64))
BEGIN
CREATE TABLE IF NOT EXISTS CONCAT(name) (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
CREATE TABLE IF NOT EXISTS `name` (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
CREATE TABLE IF NOT EXISTS name (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
END$$
DELIMITER ;
与
CALL procedure_name('test');
但它总是创建一个名为 "name" 的 table 而不是 "test"。
您需要使用 CONCAT
和 statement
来构造查询并执行它,例如:
DELIMITER $$
CREATE PROCEDURE `procedure_name` (IN name VARCHAR(64))
BEGIN
SET @query = CONCAT('CREATE TABLE IF NOT EXISTS', name, '(`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32))');
PREPARE stmt FROM @query ;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
Name
似乎是保留关键字。 IN 也是参数的默认类型。试试这个:
DELIMITER $$
CREATE PROCEDURE `procedure_name` ( p_name VARCHAR(64))
BEGIN
CREATE TABLE IF NOT EXISTS p_name (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
END$$
DELIMITER ;
你们中有人知道如何在 MySQL 过程中使用 VARCHAR 参数吗? 我尝试了以下方法:
DELIMITER $$
CREATE PROCEDURE `procedure_name` (IN name VARCHAR(64))
BEGIN
CREATE TABLE IF NOT EXISTS CONCAT(name) (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
CREATE TABLE IF NOT EXISTS `name` (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
CREATE TABLE IF NOT EXISTS name (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
END$$
DELIMITER ;
与
CALL procedure_name('test');
但它总是创建一个名为 "name" 的 table 而不是 "test"。
您需要使用 CONCAT
和 statement
来构造查询并执行它,例如:
DELIMITER $$
CREATE PROCEDURE `procedure_name` (IN name VARCHAR(64))
BEGIN
SET @query = CONCAT('CREATE TABLE IF NOT EXISTS', name, '(`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32))');
PREPARE stmt FROM @query ;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
Name
似乎是保留关键字。 IN 也是参数的默认类型。试试这个:
DELIMITER $$
CREATE PROCEDURE `procedure_name` ( p_name VARCHAR(64))
BEGIN
CREATE TABLE IF NOT EXISTS p_name (`id` INT(11) PRIMARY KEY AUTO_INCREMENT, `uid` VARCHAR(32));
END$$
DELIMITER ;