调用本机函数时参数计数不正确 'JSON_OBJECT'

Incorrect parameter count in the call to native function 'JSON_OBJECT'

我正在从 table 中获取所有列,并使用函数 JSON_OBJECT 将结果提取到 JSON。但是当我执行存储过程时出现此错误。

CREATE DEFINER=`sistema`@`%` PROCEDURE `get_products_as_json`()
BEGIN

SET @fields = (
    'SELECT 
        group_concat(\'\`\', column_name, \'\`\, \', column_name)
    FROM
        information_schema.columns
    WHERE
        table_schema = DATABASE()
            AND table_name = \'products\'
    ORDER BY table_name , ordinal_position'
);

SET @stmt = ('SELECT JSON_OBJECT(?) FROM products LIMIT 10');
PREPARE stmt FROM @stmt;
EXECUTE stmt USING @fields;
DEALLOCATE PREPARE stmt;

END

您不能以这种方式使用准备好的语句。

您必须连接变量

我也改了第一个SELECT,这个也行,更好读

DELIMITER $$
CREATE DEFINER=`sistema`@`%` PROCEDURE `get_products_as_json`()
BEGIN

SET @fields = (
    SELECT 
        group_concat('"', column_name, '", ', column_name)  
    FROM
        information_schema.columns
    WHERE
        table_schema = DATABASE()
            AND table_name = 'products'
    ORDER BY table_name , ordinal_position
);

SET @stmt =  CONCAT('SELECT json_object(',@fields,') FROM FROM products LIMIT 10');
PREPARE stmt FROM @stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END$$
DELIMITER ;

我还添加了分隔符以防你不使用 mysql workbench