是否可以从c#向存储过程发送it列表?
UPDATE Germs
SET Mutated = ~Mutated
WHERE (GermID IN (ids))发布于 2008-10-08 14:32:17
这可能是一个卑劣的技巧,但您可以创建一个临时表,然后从存储过程中连接到它(假设它们在同一连接期间被访问)。例如:
CREATE TABLE #ids (id int)
INSERT INTO #ids VALUES ('123') -- your C# code would generate all of the inserts
-- From within your stored procedure...
UPDATE g
SET Mutated = ~Mutated
FROM Germs g
JOIN #ids i ON g.GermID = i.id发布于 2008-10-08 14:39:14
你可以试试我用过的方法:
创建一个名为Split_String的函数
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE FUNCTION [dbo].[Split_String]
(
@MyString varchar(5000)
)
RETURNS @Results TABLE
(
Value varchar(1000)
)
AS
BEGIN
DECLARE @Pos int
DECLARE @StrLen int
DECLARE @MyLen int
DECLARE @MyVal varchar
SET @pos = 1
SET @MyLen = 1
WHILE @MyString <> ''
BEGIN
SET @MyLen = charindex(',',@MyString)
IF @MyLen = 0 SET @MyLen = Len(@MyString)
INSERT @Results SELECT replace(substring(@MyString, @pos, @MyLen),',','')
SET @MyString = SUBSTRING(@MyString,@MyLen+1,len(@MyString))
END
RETURN
END然后,当您使用IN()时,请按以下方式使用逗号分隔的字符串:-
SELECT * FROM [youDataBase].[dbo].[Split_String] (<@MyString, varchar(5000),>)发布于 2008-10-08 14:26:46
根据This的文章,您可以尝试使用表值参数。
https://stackoverflow.com/questions/183032
复制相似问题