首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从c#向SQL Server存储过程发送ID列表

从c#向SQL Server存储过程发送ID列表
EN

Stack Overflow用户
提问于 2008-10-08 14:22:54
回答 4查看 2.3K关注 0票数 1

是否可以从c#向存储过程发送it列表?

代码语言:javascript
复制
UPDATE Germs
SET Mutated = ~Mutated
WHERE (GermID IN (ids))
EN

回答 4

Stack Overflow用户

发布于 2008-10-08 14:32:17

这可能是一个卑劣的技巧,但您可以创建一个临时表,然后从存储过程中连接到它(假设它们在同一连接期间被访问)。例如:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2008-10-08 14:39:14

你可以试试我用过的方法:

创建一个名为Split_String的函数

代码语言:javascript
复制
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()时,请按以下方式使用逗号分隔的字符串:-

代码语言:javascript
复制
SELECT * FROM [youDataBase].[dbo].[Split_String] (<@MyString, varchar(5000),>)
票数 2
EN

Stack Overflow用户

发布于 2008-10-08 14:26:46

根据This的文章,您可以尝试使用表值参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/183032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档