gpt4 book ai didi

sql-server - 将 GUID 数组从 C# 集合传递到存储过程

转载 作者:行者123 更新时间:2023-12-02 17:37:51 25 4
gpt4 key购买 nike

我有一个存储过程,我想用它在父表中创建一行[测试]和子表 [TestQuestion] 中的多行。父表和子表都具有身份数据类型的主键。这是删除了一些不相关的列后的子表的样子:

CREATE TABLE [dbo].[TestQuestion] (
[TestQuestionId] INT IDENTITY (1, 1) NOT NULL,
[TestId] INT NOT NULL,
[QuestionNumber] INT NOT NULL
);

插入父表很容易,因为所有参数都提供给 SP,我只需将这些参数映射到插入并执行插入。但是子数据表 ID 作为参数 @qidsJSON 包含 JSON 格式的 ID,如下所示:

parameterList.Add(new SqlParameter ("@qidsJSON", qids.ToJSONString()));

["3CEFF956-BF61-419E-8FB2-9D6A1B75B909","63E75A2D-9F45-43CC-B706-D9890A22577D"]

有没有一种方法可以使用 TransactSQL 从我的 @qidsJSON 中获取数据并是否为参数中出现的每个 GUID 在 TestQuestion 表中插入一行?

或者,还有另一种方法可以在包含多个 GUID 的参数中传递数据吗?我正在使用 C# 从 C# List 中制定输入数据,这样我就可以以最易于存储过程使用的任何形式为输入参数创建数据。

最佳答案

您可以为存储过程使用表变量参数:

CREATE TYPE GuidList AS TABLE (Id UNIQUEIDENTIFIER)

CREATE PROCEDURE test
@Ids dbo.GuidList READONLY
AS

为了在 C# 中使用表变量参数,请使用以下引用:

How to pass table value parameters to stored procedure from .net code

C# and Table Value Parameters

关于sql-server - 将 GUID 数组从 C# 集合传递到存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com