【发布时间】:2020-11-12 19:19:07
【问题描述】:
我想要一个 MySQL 过程,它可以生成 SELECT FROM 表并通过 JSON_ARRAYAGG 以 JSON 格式返回结果,但表名是一个参数。
所以有我的解决方案,但是我调用它时它不起作用,因为系统认为参数是表名。如果有人可以帮助我,我将非常感激。
CREATE DEFINER=`ME` PROCEDURE `main_list`(
IN `the_table` CHAR(50)
)
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
BEGIN
SELECT JSON_ARRAYAGG(JSON_OBJECT('id', id,'name', NAME)) from the_table;
END
调用和错误:
CALL `main_list`('martin');
/* SQL Error (1146): Table 'my_server.the_table' doesn't exist */
【问题讨论】:
-
表名不能取自变量,使用动态SQL。
标签: mysql sql json stored-procedures