mysql函数传⼊动态表名称_存储过程函数中的动态表名称我已经编写了⼀个存储过程函数来从表中获取名称。⿇烦的是,我希望将表名作为参数传递(我需要使⽤⼏个不同的表来使⽤此函数):
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `getName`(tableName VARCHAR(50), myId INT(11)) RETURNS VARCHAR(50)
begin
DECLARE myName VARCHAR(50);
SELECT
'name' INTO myName
FROM
tableName
WHERE
id=myId;
RETURN myName;
end
此⽅法有⼀个错误,因为它使⽤变量名“ tableName”⽽不是变量的实际值。
我可以解决此问题的 ⽅法 通过使⽤CONCAT这样的:
SET @GetName = CONCAT("
SELECT
'name'
FROM
",tableName,"
WHERE
id=",myId,";
");
PREPARE stmt FROM @GetName;
mysql存储过程使用EXECUTE stmt;
…但是,当我尝试在函数中执⾏此操作时,我收到⼀条消息,提⽰:
存储函数或触发器中不允许使⽤动态SQL
我尝试使⽤ 过程 代替,但是我不能像函数⼀样让它仅仅返回⼀个值。
因此,任何⼈都可以到解决此问题的⽅法。看起来真的⾮常基础。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论