Torna al Thread

CREATE PROCEDURE [dbo].[ControlDate] ( @codicealbergo Int=null, @Codicecomalb Int=Null ) AS BEGIN DECLARE @prog_schedina Int DECLARE @numRow int DECLARE @numRowA int DECLARE @numRowP int DECLARE @codalbergo Int DECLARE @codcomalb Int DECLARE @ncomp Int DECLARE @annogestionale Int DECLARE @data_elaborazione SmallDateTime DECLARE @stato Varchar DECLARE @codstato Int DECLARE @codcomune Int DECLARE @Comune Varchar(100) DECLARE @prov Varchar(2) SET @numRow = 0 --non è necessaria ma è sempre meglio averla in vista CREATE TABLE #tblTemp ( numRow INT, prog_schedina INT, codalbergo INT , codcomalb INT , annogestionale Int, data_elaborazione SmallDateTime, data_Arrivo SmallDateTime , prog_schedina1 INT, data_Partenza SmallDateTime , codstato int , codcom int, comune Varchar(100), prov varchar(2) ) DECLARE ShiftCursorValue CURSOR FOR SELECT prog_schedina, codalbergo, codcomalb, annogestionale, data_elaborazione, stato, ncomp, codstato, codcomune, comune, prov FROM Archivio_mov WHERE CodAlbergo=@codicealbergo AND codcomalb=@codicecomalb order by stato,data_elaborazione OPEN ShiftCursorValue FETCH NEXT FROM ShiftCursorValue INTO @prog_schedina,@codalbergo,@codcomalb,@annogestionale,@data_elaborazione,@stato,@ncomp,@codstato,@codcomune,@comune,@prov WHILE @@FETCH_STATUS = 0 BEGIN IF (LTRIM(@stato) = 'A') BEGIN SET @numRowA = @ncomp WHILE @numRowA <> 0 BEGIN SET @numRow = @numRow + 1 INSERT INTO #tblTemp (numRow, prog_schedina, codalbergo, codcomalb, annogestionale, data_elaborazione, data_Arrivo, data_Partenza, codstato, codcom, comune, prov) VALUES (@numRow, @prog_schedina, @codalbergo, @codcomalb, @annogestionale, @data_elaborazione, @data_elaborazione, null, @codstato, @codcomune, @comune, @prov) SET @numRowA = @numRowA -1 END END IF (LTRIM(@stato) = 'P') BEGIN WHILE @ncomp <> 0 BEGIN SELECT @numRowP = MIN(numRow) FROM #tblTemp WHERE codalbergo = @codalbergo AND codcomalb = @codcomalb AND data_Partenza is null AND codstato = @codstato AND comune = @comune AND codcom = @codcomune UPDATE #tblTemp SET prog_schedina1=@prog_schedina, data_Partenza = @data_elaborazione WHERE (data_Partenza is null AND codalbergo = @codalbergo AND codcomalb = @codcomalb AND codstato = @codstato AND comune = @comune AND codcom = @codcomune AND numRow = @numRowP) SET @ncomp = @ncomp - 1 END END FETCH NEXT FROM ShiftCursorValue INTO @prog_schedina,@codalbergo,@codcomalb,@annogestionale,@data_elaborazione,@stato,@ncomp,@codstato,@codcomune,@comune,@prov END CLOSE ShiftCursorValue DEALLOCATE ShiftCursorValue SELECT DISTINCT prog_schedina, Albergo.descrizione, codalbergo, codcomalb, annogestionale, Data_Arrivo, prog_schedina1, Data_Partenza, Codstato, Nazioni.Nazione, CodCom, comune, prov, CASE WHEN Data_arrivo > Data_Partenza THEN 'ERRATO' ELSE 'CORRETTO' END as controllo FROM ( SELECT prog_schedina, codalbergo, codcomalb, annogestionale, Data_elaborazione AS Data , Data_Arrivo, prog_schedina1, Data_Partenza, CodStato, CodCom, comune, prov FROM #tblTemp UNION ALL SELECT prog_schedina, codalbergo, codcomalb, annogestionale, Data_Partenza AS Data , Data_Arrivo, prog_schedina1, Data_Partenza, CodStato, CodCom, comune, prov FROM #tblTemp WHERE Data_Partenza is not null ) as MOV JOIN Albergo ON Albergo.codalb=MOV.codalbergo AND Albergo.CodComune =MOV.codcomalb JOIN Nazioni ON Nazioni.codicepgrstatistica=Mov.codstato WHERE MOV.CodAlbergo=@codicealbergo AND MOV.codcomalb=@codicecomalb GROUP BY prog_schedina, Albergo.descrizione, codalbergo, codcomalb, annogestionale, Data_Arrivo, prog_schedina1, Data_Partenza, Codstato, Nazioni.Nazione, CodCom, comune, prov ORDER BY codalbergo Return END
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5