You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL存储过程是否支持传入表值参数?

MySQL 中是否支持类似 SQL Server 的表值参数?

在 SQL Server 中,我们可以通过表值参数(用户定义表类型)向存储过程传入结构化的表格数据,示例如下:

CREATE OR ALTER PROCEDURE [dbo].[TestProcedure]
(
    @Id INT,
    @StartDate DATETIME,
    @EndDate DATETIME,  
    @TestIds1 dbo.UserDefinedTableType1 READONLY,
    @TestIds2 dbo.UserDefinedTableType2 READONLY
)

MySQL 的替代实现方案

MySQL 目前没有直接对应 SQL Server 表值参数的功能,但可以通过JSON 格式参数实现类似的结构化数据传入需求,具体操作如下:

1. 传入 JSON 格式的列表数据

若要传入如下 Id 列表:

Id
1
2

可将其序列化为 JSON 字符串 '[{"Id":1},{"Id":2}]',再调用存储过程:

CALL TestProcedure
(
    ID1,
    '[{"Id":1},{"Id":2}]',
    '[{"Id2":1}]',
    'No'
);

2. 在存储过程中解析 JSON 数据

使用 JSON_TABLE 函数将 JSON 字符串解析为表格数据:

SELECT *
FROM JSON_TABLE(Ids, "$[*]"
        COLUMNS(Id INT PATH "$.Id")) AS XX;

内容的提问来源于stack exchange,提问作者Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:15:36