gpt4 book ai didi

asp.net - 将 List 传递给存储过程

转载 作者:行者123 更新时间:2023-12-02 16:38:30 24 4
gpt4 key购买 nike

我有一个字符串列表,我需要检查列表中的任何值是否包含在数据库表中。如果存在,则返回现有值的数据集。

public DataSet CheckDocumentNumber(List<string> DocNumber)
{
DataSet DocNum = new DataSet();
SqlTransaction transaction = DALDBConnection.SqlConnection.BeginTransaction();

try
{
string[] taleNames = new string[1];
taleNames[0] = "DocNum";
SqlParameter[] param = new SqlParameter[1];
param[0] = new SqlParameter("@DocNumber", DocNumber);

SqlHelper.FillDataset(transaction, CommandType.StoredProcedure, "spCheckDocNumber", DocNum, taleNames, param);
transaction.Commit();
}
catch (Exception e)
{
transaction.Rollback();
}

return DocNum;
}

我的存储过程是

CREATE PROCEDURE spCheckDocNumber
@DocNumber VARCHAR(MAX)
AS
BEGIN
SELECT * FROM tblDocumentHeader WHERE DocumentNumber = @DocNumber
END

我需要知道如何将列表传递给存储过程以及如何在过程中检查列表。请帮忙

最佳答案

创建一个 Split 函数,用于根据字符拆分字符串。

GO
CREATE FUNCTION dbo.Split (@sep char(1), @s varchar(8000))
RETURNS table
AS
RETURN (
WITH splitter_cte AS (
SELECT CHARINDEX(@sep, @s) as pos, 0 as lastPos
UNION ALL
SELECT CHARINDEX(@sep, @s, pos + 1), pos
FROM splitter_cte
WHERE pos > 0
)
SELECT SUBSTRING(@s, lastPos + 1,
case when pos = 0 then 80000
else pos - lastPos -1 end) as chunk
FROM splitter_cte
)
GO

SELECT *
FROM dbo.Split(' ', 'the quick brown dog jumped over the lazy fox')
OPTION(MAXRECURSION 0);

然后使用 Split 函数以逗号分隔,然后您可以将输出用作表格,然后与您要查找的表格进行联接。

这可以使分割逗号分隔的列表变得非常容易。然后您可以传入一个字符串,其中所有 hte 值均以逗号分隔。

希望这有帮助!

关于asp.net - 将 List<string> 传递给存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074829/

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