2012-10-12 153 views
0

我有我的asp.net頁面中的複選框下拉列表。 在該頁面中,我將檢查多個/單個/所有值。將列表/數組傳遞給存儲過程,並在存儲過程中逐個檢索參數。

現在我想將所有選擇的值從dropdownlist傳遞給sql server 2005存儲過程作爲參數。

我想選擇的值的陣列作爲一個字符串傳遞,通過分離的每個陣列項「」

而在存儲過程中,我想檢索每個值一個接一個。 (使用分割功能或任何更好的選擇?)

我想處理插入查詢每個選定的參數。

請任何幫助。

我試過這個存儲過程。

CREATE PROCEDURE [dbo].[TEST_LIST] 
@ID_LIST VARCHAR(200) 

AS
DECLARE @pos INT, @nextpos INT, @valuelen INT

SELECT @pos = 0,@nextpos = 1個

WHILE @nextpos> 0 BEGIN SELECT @nextpos = charindex(',',@ID_LIST,@pos + 1) SELECT @valuelen = CASE WHEN @nextpos> 0 THEN @nextpos ELSE len(@ID_LIST)+ 1 個END - @pos - 1

INSERT INTO TABLE 
    (ID) 
    VALUES (convert(int, substring(@ID_LIST, @pos + 1, @valuelen))) 
    SELECT @pos = @nextpos 

END RETURN END

BUT這是正確的??

I GOT ERROR。

請注意this>一個接一個我想檢索參數,並在每次我有插入查詢。

+0

您是否在C#端尋求幫助來連接值?或者SQL方面把它們分離出來?既然你在SQL 2005中,這個參數或XML參數是你唯一的選擇,在較新的SQL Server版本中,你也可以使用Table Valued參數(儘管升級SQL Server對於已經在生產中的應用程序來說通常不是一個簡單的選項)。 – dbattaglia

+0

我認識的大多數人在某個點或其他地方寫了某種形式的'dbo.Split' UDF,它需要一個字符串和一個分隔符,並將其拆分爲單列表結果...我建議這沒有什麼不同。令人煩惱的是,SQL Server缺少內置的「分割」功能,是的。 –

+0

我編輯了我的問題請再次參考 – Patel

回答

0

AS回答我的問題,你 請更改您的存儲過程 如下表所示。

CREATE PROCEDURE SplitList 
@List varchar(500) --list like 1,12,13 or john,12,bobe 

AS BEGIN

DECLARE @value varchar(10), @Pos int 

SET @List = LTRIM(RTRIM(@List))+ ',' 
SET @Pos = CHARINDEX(',', @List, 1) 

IF REPLACE(@List, ',', '') <> '' 
BEGIN 
    WHILE @Pos > 0 
    BEGIN 
     SET @value = LTRIM(RTRIM(LEFT(@List, @Pos - 1))) 
     IF @value <> '' 
     BEGIN 
      -- put your code here 
     END 
     SET @List = RIGHT(@List, LEN(@List) - @Pos) 
     SET @Pos = CHARINDEX(',', @List, 1) 

    END 
END   

END

感謝所有。

相關問題