Rulati urmatorul cod si includeti planul de executie (varianta cursor e clar mai neperformanta):
USE tempdb
GO
CREATE TABLE MyTable (ID INT PRIMARY KEY, VAL VARCHAR(64))
GO
DECLARE @I INT
SET @I = 1
WHILE @I < 100
BEGIN
INSERT INTO MyTable (ID,VAL) VALUES (@I, 'VAL:'+CAST(@I AS VARCHAR(4)));
SET @I=@I+1
END
GO
-- Varianta SELECT
DECLARE @Lista VARCHAR(MAX)
SET @Lista = '';
SELECT @Lista=@Lista + VAL + ' ' FROM MyTable
GO
-- Varianta CURSOR
DECLARE @Lista VARCHAR(MAX)
DECLARE @Valoare VARCHAR(32);
SET @Lista = '';
DECLARE ListaCursor CURSOR
FOR SELECT VAL FROM MyTable
OPEN ListaCursor
FETCH NEXT FROM ListaCursor INTO @Valoare
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Lista = @Lista + @Valoare + ' '
FETCH NEXT FROM ListaCursor INTO @Valoare
END
CLOSE ListaCursor
DEALLOCATE ListaCursor
GO
Cristian Andrei Lefter, SQL Server MVP
MCT, MCSA, MCDBA, MCAD, MCSD .NET,
MCTS, MCITP - Database Administrator SQL Server 2005
http://sqlserver.ro