SQL Server错误?

时间:2009-08-20 10:12:13

标签: sql-server sql-server-2000

我正在编写一个处理一些CSV数据的函数。这是我到目前为止所写的......

CREATE FUNCTION dbo.FGetCommaSeperatedValues(@csv as text)
RETURNS @tblIds TABLE(id int,csvlength int) 
AS
BEGIN
    DECLARE @csvlength AS int
    --SET @csvlength = datalength(@csv);
    SET @csvlength = 7685
    DECLARE @currentIndex AS int
    SET @currentIndex = 0
        WHILE @currentIndex < @csvlength
            BEGIN
                --INSERT INTO @tblIds SELECT @currentIndex,@csvlength
                INSERT INTO @tblIds (id,csvlength) values (@currentIndex,@csvlength)
                SET @currentIndex = @currentIndex+1
            END
    RETURN
END

我的问题是当我执行该功能时,使用以下命令......

SELECT * FROM FGetCommaSeperatedValues('')

返回的表格没有显示我期望的结果。

一切都很好,直到第3624行左右(正如预期的那样,id列增加1) 然后值不规律地增加。

我的同事在SQL Server 2008中测试了这段代码,一切正常。这似乎与SQL Server 2000隔离。

有没有人知道这个错误,和/或它的解决方案?

1 个答案:

答案 0 :(得分:4)

为了在SQL Server中 gaurantee 排序顺序,必须使用ORDER BY子句。

ORDER BY CLAUSE