| [Home] | Utilizare CURSOR: mutarea unor randuri (inregistrari) pe coloane | ||
--tabela Article
CREATE TABLE Article
(
[ID] INT PRIMARY KEY IDENTITY (1, 1),
[Name] NVARCHAR (100),
[Description] NVARCHAR (200))
----------------------------------------------
-- Exemplu: transformarea randurilor in coloane
-- utilizand cursoare si tabele temporare
----------------------------------------------
--declarare variabile interne
DECLARE @Name NVARCHAR(100)
DECLARE @Description NVARCHAR(200)
DECLARE @sql AS VARCHAR(8000)
--creare tabel temporar
CREATE TABLE #temp ([ID] INT PRIMARY KEY IDENTITY)
--declarare cursor
DECLARE curs CURSOR FOR
SELECT [Name], [Description]
FROM Article
ORDER BY [Name]
--deschidere cursor
OPEN curs
--preluarea primei inregistrari
FETCH NEXT FROM curs
INTO @Name, @Description
--navigarea prin setul de inregistrari
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER TABLE #temp ADD [' + @Name + '] NVARCHAR(100)'
EXECUTE (@sql)
SET @sql = 'INSERT INTO #temp (' + @Name + ') VALUES (''' + @Description + ''')'
EXECUTE (@sql)
FETCH NEXT FROM curs
INTO @Name, @Description
END
--inchidere cursor
CLOSE curs
DEALLOCATE curs
SELECT * FROM #temp
--stergere tabel temporar
DROP TABLE #temp