Отправьте список идентификаторов хранимой процедуре SQL Server из c # - PullRequest
1 голос
/ 08 октября 2008

Можно ли отправить список идентификаторов хранимой процедуры из c # без грязных хаков?

UPDATE Germs
SET Mutated = ~Mutated
WHERE (GermID IN (ids))

Ответы [ 4 ]

2 голосов
/ 08 октября 2008

Вы можете попробовать то, что я сделал с: -

Создать функцию с именем 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),>)
2 голосов
/ 08 октября 2008

Это может быть грязный хак, но вы можете создать временную таблицу и затем присоединиться к ней из вашей хранимой процедуры (при условии, что к ним обращаются во время одного и того же соединения). Например:

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
0 голосов
/ 08 октября 2008

Да, вы можете использовать кусок XML, чтобы создать свой список идентификаторов. Затем вы можете использовать OPENXML и выбрать из этого набора записей.

Поиск OPENXML, sp_preparexmldocument, sp_removexmldocument

0 голосов
/ 08 октября 2008

Согласно этой статье , вы можете попробовать параметр Table Value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...