gpt4 book ai didi

mysql存储过程调用无法访问参数值

转载 作者:行者123 更新时间:2023-11-29 00:55:09 25 4
gpt4 key购买 nike

我在 mysqldb 上有一个名为 create_new_db(p VARCHAR(45)) 的存储过程。语法如下。

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `create_new_db`( p VARCHAR(45))

BEGIN

CREATE SCHEMA IF NOT EXISTS p DEFAULT CHARACTER SET latin1 ;

-- -----------------------------------------------------
-- Table `p`.`events`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS p.events ( yada, yada, ...)

当我使用

调用存储过程时
Call mysqldb.create_new_db('new_db_name');

程序执行,数据库和表被创建,但我传入的参数未被访问。创建的数据库名为 p 而不是我传递给过程的名称参数

我试过将参数分配给脚本中的全局变量

@P = p;

然后我可以看到我传递给过程的参数名称正在进入存储过程,但为什么它不起作用??

我可能在这里遗漏了一些明显的东西,但是......我们将不胜感激。

最佳答案

你不能像那样创建动态 sql。您必须使用 EXECUTE IMMEDIATE 'some dynamic sql stmt'

你将一个字符串传递给它,所以在你的存储过程中构建你的 sql,如下所示:

EXECUTE IMMEDIATE concat('CREATE SCHEMA IF NOT EXISTS ', p, ' DEFAULT CHARACTER SET latin1');

与您的其他 CREATE 语句类似

关于mysql存储过程调用无法访问参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6434748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com