簡體   English   中英

將List / Array傳遞給存儲過程,並在存儲過程中一一檢索參數。

[英]Pass List/ Array to stored procedure and retrieve parameters one by one in stored procedure.?

我的asp.net頁上有帶下拉列表的復選框。 在該頁面中,我要檢查多個/單個/所有值。

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

我想將選定值的數組作為字符串傳遞,每個數組項均以“,”分隔

在存儲過程中,我想一一檢索每個值。 (使用拆分功能還是其他更好的選擇?)

我想對每個選定的參數進行插入查詢。

請任何幫助。

我已經嘗試過此存儲過程。

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


宣告@pos int,@ nextpos int,@ valuelen int

SELECT @pos = 0,@nextpos = 1

@nextpos> 0開始時選擇@nextpos = charindex(',',@ID_LIST,@pos + 1)SELECT @valuelen = CASE @@ nextpos> 0然后@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

結束返回結束

但是這是正確的嗎?

我出錯了。

請注意>我要一一檢索參數,並且每次我都有插入查詢。

您可以使用c#連接字符串(也稱為“理貨表”),然后在sql中拆分它們。

一篇關於如何拆分“理貨表格”的好文章: http : //www.sqlservercentral.com/articles/T-SQL/62867/

根據我的問題,請按以下所示更改存儲的過程。

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

從頭開始

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         

結束

謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM