2009-08-20 4 views
2

Ich schreibe eine Funktion, um einige CSV-Daten zu verarbeiten. Dies ist, was ich bisher geschrieben ...SQL Server Fehler?

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 

Mein Problem ist, dass, wenn ich die Funktion ausführen, ... mit dem folgenden Befehl

SELECT * FROM FGetCommaSeperatedValues('') 

Die Tabelle zurück zeigt nicht die Ergebnisse das erwarte ich.

Alles ist in Ordnung bis rund Zeile 3624 oder so (wie erwartet, id Spalte erhöht sich um 1) Dann werden die Werte unregelmäßig erhöht.

Mein Kollege hat diesen Code in SQL Server 2008 getestet und alles funktioniert einwandfrei. Dies scheint zu SQL Server 2000 isoliert zu sein.

Kennt jemand diesen Fehler, und/oder es ist die Auflösung?

Antwort

4

Um gaurantee Sortierreihenfolge in SQL Server Sie müssen verwenden Sie die ORDER BY-Klausel.

ORDER BY CLAUSE

+0

Doh !, ja natürlich! –

+0

Sie würden sich wundern, wie viele Menschen von diesem Fall erwischt wurden! –