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

如何在TSQL中将JSON值赋值给变量?存储过程开发求助

解决从JSON提取值并插入表的存储过程问题

嘿,我懂你现在的纠结——想把JSON里的Id直接插入表头表,还要用JSON里的UserName查到对应的UserID一起插入,但卡在了怎么把JSON值赋值给变量这一步对吧?别慌,我给你一步步拆解解决方案:

第一步:把JSON值提取到变量里

SQL Server里有俩好用的工具处理JSON:JSON_VALUE(专门提单个标量值)和OPENJSON(适合解析复杂JSON成行集)。你的场景用JSON_VALUE就足够简单直接了。

先给你演示怎么声明并赋值变量:

-- 注意:原JSON里的"是HTML转义的双引号,要换成普通双引号才能被SQL正确解析
DECLARE @Json NVARCHAR(MAX) = '{"Id":1, "SerialNumber":425, "Model":"T8X", "UserName":"BRASKYB"}';
DECLARE @Id INT;
DECLARE @UserName NVARCHAR(50);
DECLARE @UserID INT; -- 用来存查到的用户ID

-- 从JSON里把Id和UserName提取到变量
SET @Id = JSON_VALUE(@Json, '$.Id');
SET @UserName = JSON_VALUE(@Json, '$.UserName');

第二步:整合逻辑到存储过程里

接下来把查询UserID、插入表头表的逻辑打包成存储过程,完整脚本如下:

CREATE PROCEDURE CreatePartHeaderRow
    @Json NVARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @Id INT;
    DECLARE @UserName NVARCHAR(50);
    DECLARE @UserID INT;

    -- 先处理JSON里的转义引号(如果你的输入JSON带"的话)
    SET @Json = REPLACE(@Json, '"', '"');

    -- 提取JSON中的核心值到变量
    SET @Id = JSON_VALUE(@Json, '$.Id');
    SET @UserName = JSON_VALUE(@Json, '$.UserName');

    -- 根据UserName查询对应的UserID(假设用户表叫Users,字段是UserName和UserID)
    SELECT @UserID = UserID
    FROM Users
    WHERE UserName = @UserName;

    -- 可选:做个校验,避免插入无效的UserID
    IF @UserID IS NOT NULL
    BEGIN
        -- 插入表头行表(假设表头表叫PartHeaderRows,字段是Id和UserID)
        INSERT INTO PartHeaderRows (Id, UserID)
        VALUES (@Id, @UserID);
    END
    ELSE
    BEGIN
        -- 找不到用户时可以抛出错误或者记录日志,根据你的业务需求调整
        RAISERROR('未找到用户名对应的用户:%s', 16, 1, @UserName);
    END
END

额外小提示

  • 如果你的JSON结构更复杂,比如嵌套了对象/数组,用OPENJSON会更灵活,比如:
-- 用OPENJSON解析成临时表提取值
SELECT Id, UserName
INTO #TempJsonData
FROM OPENJSON(@Json)
WITH (
    Id INT '$.Id',
    UserName NVARCHAR(50) '$.UserName'
);

SET @Id = (SELECT Id FROM #TempJsonData);
SET @UserName = (SELECT UserName FROM #TempJsonData);
  • 记得把脚本里的表名、字段名换成你实际库中的名称哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:26:17