我的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 @nepospos> 0 开始 SELECT @nepospos = charindex(',',@ ID_LIST,@ post + 1) SELECT @valuelen = CASE WHEN @nepospos> 0 然后@nextpos ELSE len(@ID_LIST)+ 1 结束 - @pos - 1
INSERT INTO TABLE
(ID)
VALUES (convert(int, substring(@ID_LIST, @pos + 1, @valuelen)))
SELECT @pos = @nextpos
END 返回 END
但这是正确的吗?
我觉得错误。
请注意这个>我想逐个检索参数,每次都有插入查询。
答案 0 :(得分:0)
您可以使用c#连接字符串(这也称为“计数表”),然后将它们拆分为sql。
关于如何拆分“计数表”的好文章:http://www.sqlservercentral.com/articles/T-SQL/62867/
答案 1 :(得分:0)
作为我的问题的答案, 你请改变你的存储过程 如下所示。
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
感谢所有人。