gpt4 book ai didi

mysql - 具有局部变量的动态 MySQL

转载 作者:可可西里 更新时间:2023-11-01 08:38:24 26 4
gpt4 key购买 nike

如何在不使用 session 变量的情况下在 MySQL 数据库中使用动态 SQL 语句?

现在我有这样一段代码(在MySQL存储过程中):

(...)DECLARE TableName VARCHAR(32);SET @SelectedId = NULL;SET @s := CONCAT("SELECT Id INTO @SelectedId FROM ", TableName, " WHERE param=val LIMIT 1");PREPARE stmt FROM @s;EXECUTE stmt;DEALLOCATE PREPARE stmt;IF ISNULL(@SelectedId) THEN (...)

但我只想使用局部变量,这意味着我想开始这个过程:

DECLARE TableName VARCHAR(32);DECLARE s VARCHAR(1024);DECLARE SelectedId INTEGER UNSIGNED;(...)

并且不要在任何地方使用@char。有什么办法吗?

最佳答案

抱歉,MySQL 中的准备语句是 session 全局的。根据http://dev.mysql.com/doc/refman/5.1/en/sql-syntax-prepared-statements.html ,“准备好的声明对于 session 也是全局的。”

而且在 MySQL 5.x 中没有其他方式(除了准备好的语句)来执行动态 SQL。

因此,您当然可以替换上面的“@s”,但据我所知,您只能使用@SelectedId。

在 MySQL 6.x 中,计划添加一个“EXECUTE IMMEDIATE”语句来执行动态 SQL。参见 http://forge.mysql.com/worklog/task.php?id=2793 .

关于mysql - 具有局部变量的动态 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1471570/

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