变量表名称MySQL存储函数

时间:2014-02-25 02:17:45

标签: mysql stored-functions

我有几个MySQL表维护记录的树结构。每条记录都有一个ID和一个父字段。我想写一个存储函数来获取父ID,给定一个记录ID。

以下是我的第一次尝试,这是不正确的。我的问题是我不知道如何使用变量表名。

delimiter $$

create function parent(
    tableName varchar(15),
    nodeId    int
) returns int
begin
    declare p int;
    select parent into p from tableName where id=nodeId;
    return p;
end$$

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:1)

经过一番研究,显然存储函数在这种情况下不起作用,因为存储函数无法执行动态SQL。我将我的实现更改为存储过程。

delimiter $$

create procedure parent(tableName varchar(15), nodeId int)
begin
    set @s := concat('select parent from ', tableName, ' where id =', nodeId);
    prepare query from @s;
    execute query;
    deallocate prepare query;
end$$

delimiter ;
相关问题