首页 >后端开发 >C++ >如何从 C# 高效地将动态字符串列表传递到 SQL Server 存储过程?

如何从 C# 高效地将动态字符串列表传递到 SQL Server 存储过程?

Susan Sarandon
Susan Sarandon原创
2025-01-04 18:44:38465浏览

How to Efficiently Pass a Dynamic String List to a SQL Server Stored Procedure from C#?

C# SQL Server - 将动态字符串列表传递到存储过程

Brett 的查询围绕将动态字符串列表合并到 SQL Server 存储过程中。挑战在于如何在不影响性能的情况下有效地传递此列表。

将字符串连接到逗号分隔列表的传统方法有局限性,尤其是对于较大的数据集。但是,还有更有效的选项可用。

用户定义的表类型 (UDT):

SQL Server 2008 引入了用户定义的表类型 (UDT),它允许您创建可以存储表格数据的自定义数据类型。您可以创建一个名为“StringList”的 UDT 并在存储过程中使用它。

SQL:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

以下 C# 代码演示如何使用此 UDT:

var table = new DataTable();
table.Columns.Add("Item", typeof(string));

for (int i = 0; i < 10; i++)
    table.Rows.Add("Item " + i.ToString());

var pList = new SqlParameter("@list", SqlDbType.Structured);
pList.TypeName = "dbo.StringList";
pList.Value = table;

在存储过程中,您可以使用以下方式访问列表:

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    SELECT l.Item FROM @list l;
END

以上是如何从 C# 高效地将动态字符串列表传递到 SQL Server 存储过程?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn