不工作的MySQL存储过程的参数

问题描述 投票:0回答:1

我是新来的MySQL和我想的端口从SQL Server的一些存储过程。我创建了参数传递MySQL中的基本存储过程。

该存储的过程简单地需要一个参数,并执行基于所提供的参数a“如果存在降”。

当在MySQL运行结果在下面的错误。

似乎不知何故,参数传递“mytablename”到存储过程中的语句而不是一个参数的一部分被执行。

有什么建议?

SQL语句:

call mydb.spDroptableifexist('customerdata');

结果:

0 row(s) affected, 1 warning(s): 1051 Unknown table 'mydb.mytablename'

这是存储过程:

USE `mydb`;
DROP procedure IF EXISTS `spDroptableifexist`;

DELIMITER $$
USE `mydb`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spDroptableifexist`(IN mytablename VARCHAR(255))
BEGIN
    drop table if exists mytablename;
END$$

DELIMITER ;
c# mysql stored-procedures parameters
1个回答
2
投票

manual

用户变量旨在提供数据值。它们不能直接在SQL语句中作为标识符或作为标识符,如环境的一部分,其中一个表或数据库名,预计使用

要使用一个变量作为表名,你需要准备一个语句并执行它:

SET @sql = CONCAT('DROP TABLE IF EXISTS ', mytablename);
PREPARE stmt FROM @sql;
EXECUTE stmt;
© www.soinside.com 2019 - 2024. All rights reserved.