日期:2014-05-18  浏览次数:20463 次

[20 分] 请问SQL里能用数组否?
用户可能要把   N   个值赋给一个用户   A,简单的SQL如下:

INSERT   INTO   Table1([user],[value])   VALUES(A,N1)

这样就可以把   N1   赋给   A   了,不过如果   N   =100,就要循环   100   次上面的句子。

请问在存储过程里可以简单点执行吗?

@ValueN   int,   //这里可否是一个数组?
@UserID   int

AS

//假如上面可以是数组,SQL   如何循环执行?

------解决方案--------------------
// 简单数据可以先用分隔符连接,然后在分隔,
// 这里使用自定义函数,返回一个 Table

/*
* 字符串分割
* 示例:
* SELECT Value FROM dbo.uf_Util.SplitStr( '1,2,3,4,5 ', ', ')
*/
ALTER FUNCTION dbo.uf_Util_SplitStr(
@Src varchar(8000),
@Splitor varchar(10)
)
RETURNS @Result TABLE(VALUE varchar(100))
AS
BEGIN
DECLARE @i int
SET @Src = RTRIM(LTRIM(@Src))
SET @i = CHARINDEX(@Splitor,@Src)
WHILE @i> =1
BEGIN
-- 插入新值
INSERT @Result
VALUES(LEFT(@Src, @i-1))

SET @Src = SUBSTRING(@Src, @i + 1, LEN(@Src) - @i)
SET @i = CHARINDEX(@Splitor, @Src)
end

IF @Src <> ' '
INSERT @Result
VALUES(@Src)

RETURN
END