[英]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.