Modificare una stored con la with

lunedì 27 ottobre 2008 - 18.44

trinity Profilo | Guru

ciao ragazzi,

ho questa tabella con i seguenti dati:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Salviamo i seguenti dati nella tabella:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


come potete notare il terzo inserimento ha come data di arrivo il 26 ottobre anzichè il 27 in quanto supponiamo che l'operatore si sia dimenticato di inserire il record ieri.
A questo punto devo registrare le date di partenza, per far ciò ho questa stored:

ALTER PROCEDURE [dbo].[InsPartenzeC59_New] ( @Codalbergo Int, @CodComAlbergo Int, @idstato Int, @idcomune Int, @idprovincia Int, @idgruppo Int, @Datapartenza SmalldateTime ) AS BEGIN WITH CTE_GetID AS ( SELECT MIN(iddb) AS id FROM dbo.ARCHIVIO_MOV_NEW WHERE codalbergo=@codalbergo and codcomalbergo=@codcomalbergo and idstato = @idstato and idcomune = @idcomune and idprovincia = @idprovincia and idgruppo = @idgruppo and datapartenza Is Null ) UPDATE T SET T.datapartenza = @datapartenza From Archivio_mov_new As T JOIN CTE_GetID AS CTE ON T.iddb = CTE.id Where T.codalbergo=@codalbergo And T.codcomalbergo=@codcomalbergo And T.idstato=@idstato And T.idcomune=@idcomune And T.idprovincia=@idprovincia And T.idgruppo=@idgruppo And T.datapartenza Is Null END

questa stored eseguo l'aggiornamento del campo datapartenza in quanto quando si effettuano delle partenze, si prendono sempre i record con dataarrivio + vecchia e per far ciò devo lavorare sulla colonna Iddb che è un progressivo
auto-increment.

Però nella situazione sopracitata se io dovessi far partire due record in data 27 Ottobre dovrei aggiornare la colonna datapartenza del record che ha la dataarrivo = 26 ottobre ed un record che ha datapartenza 27 ottobre.
Fino quì ci siete?
Ecco il mio problema sta qui in quanto se vedete la stored se utilizzo come confronto la colonna iddb mi prende il record + vecchio inserito ma nel mio caso non è quello con dataarrivo 26 ottobre in quanto rappresenta il record + recente.
Se invece inserisco Min(dataarrivo) ecc...non mi funziona perchè se faccio aprtire due record la stored mi aggiorna sia la data del 26 ottobre che le 2 date del 27 ottobre.

Ora come posso fare?

Spero di essere stato abbastanza chiaro.

ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5