Torna al Thread

SET NOCOUNT ON; GO DECLARE @idTestata int; DECLARE @counter int = 0; DECLARE @valore decimal(10, 4); DECLARE @DataDa datetime; DECLARE @DataA datetime; SELECT @DataDa = GETDATE(); SELECT @DataDa; PRINT 'creo il cursore...' DECLARE CUR CURSOR FOR SELECT idTestata FROM dbo.Testata WHERE idTestata <= 100; PRINT 'inizio ciclo...' OPEN CUR; FETCH NEXT FROM CUR INTO @IdTestata; WHILE @@FETCH_STATUS = 0 BEGIN -- calcolo il valore dalla dettagli per la testata SELECT @valore = MAX(CASE WHEN (DATEPART(minute, dataDettaglio) % 2) <> 0 THEN valoreInt / valoreDec ELSE 999 END) FROM dbo.Dettagli WHERE idTestata = @idTestata; -- inserisco il risultato INSERT INTO dbo.Risultati (idTestata, valore) VALUES (@idTestata, @valore); SET @counter = @counter + @@ROWCOUNT; FETCH NEXT FROM CUR INTO @idTestata; END; SELECT @DataA = GETDATE(); SELECT @DataA; IF @counter > 0 BEGIN PRINT 'cicli totali: ' + CAST(@counter AS varchar(20)); PRINT 'durata totale: ' + CAST(DATEDIFF(second, @DataDa, @DataA) AS varchar(20)) + ' sec.'; PRINT 'durata al ciclo: ' + CAST(CAST((DATEDIFF(second, @DataDa, @DataA) * 1.0 / @counter) AS decimal(10,3)) AS varchar(20)) + 'sec.'; END; CLOSE CUR; DEALLOCATE CUR; DELETE FROM dbo.Risultati; /* ----------------------- 2013-10-03 18:41:18.013 creo il cursore... inizio ciclo... ----------------------- 2013-10-03 18:41:20.537 cicli totali: 100 durata totale: 2 sec. durata al ciclo: 0.020sec. */
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5