gpt4 book ai didi

c# - 使用存储过程将值列表插入到 SQL Server 表中

转载 作者:太空狗 更新时间:2023-10-29 22:32:07 24 4
gpt4 key购买 nike

如何将列数据列表传递到存储过程?

我的存储过程是

ALTER PROCEDURE [dbo].[Register]
@Id int,
@Name nvarchar(50)
AS
BEGIN
BEGIN TRY
INSERT INTO dbo.Group (Id, Name)
VALUES(@Id, @Name)

SELECT 0
END TRY
BEGIN CATCH
SELECT -1
END CATCH
END
GO

我想像这样传递数据以插入到这个表中

@Id = 1,2,3,4,5 
@Name = 'test1,test2,test3,test4,test5'

结果是这样的

Id   Name
1 test1
2 test2
3 test3
4 test4
5 test5

最佳答案

SQL Server 中的“列表”或“数组”是......一个。因此,如果您使用的是 SQL Server 2008 或更新版本(您未指定),则使用 SQL Server 的表值参数功能来传递值表到你的存储过程

-- Create a table type to match your input parameters
CREATE TYPE IdNameTable AS TABLE
( ID INT, Name NVARCHAR(50) );
GO

-- change your stored procedure to accept such a table type parameter
ALTER PROCEDURE [dbo].[Register]
@Values IdNameTable READONLY
AS
BEGIN
BEGIN TRY
INSERT INTO dbo.Group (Id, Name)
-- get the values from the table type parameter
SELECT
Id, Name
FROM
@Values

SELECT 0
END TRY
BEGIN CATCH
SELECT -1
END CATCH
END
GO

查看广泛且免费的 SQL Server Books Online documentation有关表值参数功能及其使用方法的更多详细信息

如果你想从 T-SQL 使用这个,使用这个代码:

-- declare a variable of that table type
DECLARE @InputTable IdNameTable

-- insert values into that table variable
INSERT INTO @InputTable(ID, Name)
VALUES (1, 'Test 1'), (2, 'Test 2')

-- execute your stored procedure with this table as input parameter
EXECUTE [dbo].[Register] @InputTable

如果您想从 C# 或 VB.NET 使用它,请参阅评论中 Michael Edenfield 的链接。

关于c# - 使用存储过程将值列表插入到 SQL Server 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24979173/

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