>Nelle istruzioni che seguono lo scopo sarebbe quello di rinumerare
>il campo IDSequenza della tabella SequenzaColli da 1 a n.
Ciao Denise,
I cursori andrebbero utilizzati solo in casi rarissimi, dove le altre soluzioni set-based sono troppo complesse da implementare oppure risultano meno performanti.
Nel tuo caso puoi sfruttare una particolarità del comando di UPDATE che permette di memorizzare in una variabile locale il valore appena assegnato ad una colonna:
USE tempdb;
CREATE TABLE dbo.SequenzaColli(
IDSequenza int NOT NULL,
Descrizione varchar(10) NOT NULL
);
INSERT dbo.SequenzaColli VALUES(1, 'Collo 1');
INSERT dbo.SequenzaColli VALUES(3, 'Collo 2');
INSERT dbo.SequenzaColli VALUES(9, 'Collo 3');
INSERT dbo.SequenzaColli VALUES(14, 'Collo 4');
INSERT dbo.SequenzaColli VALUES(22, 'Collo 5');
DECLARE @NewSeed int;
SET @NewSeed = 49;
UPDATE dbo.SequenzaColli
SET @NewSeed = IDSequenza = @NewSeed + 1;
SELECT *
FROM dbo.SequenzaColli;
/* Output:
IDSequenza Descrizione
----------- -----------
50 Collo 1
51 Collo 2
52 Collo 3
53 Collo 4
54 Collo 5
(5 row(s) affected)
*/
DROP TABLE dbo.SequenzaColli;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org