【问题标题】:MySQL stored procedure parameter not workingMySQL存储过程参数不起作用
【发布时间】:2019-06-28 21:15:04
【问题描述】:

我是 MySQL 新手,我正在尝试从 SQL Server 移植一些存储过程。我创建了一个在 MySQL 中传递参数的基本存储过程。

存储过程只接受一个参数并根据提供的参数执行“如果存在则删除”。

在 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】:

    来自manual

    用户变量旨在提供数据值。他们不能 直接在 SQL 语句中用作标识符或作为 标识符,例如在表或数据库名称为 预计

    要将变量用作表名,需要准备一条语句并执行:

    SET @sql = CONCAT('DROP TABLE IF EXISTS ', mytablename);
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 2018-03-28
      相关资源
      最近更新 更多