Salve ragazzi ho questa stored
[CODE]CREATE PROCEDURE [dbo].[InsC591_New]
(
@Codalbergo Int,
@CodComAlbergo Int,
@idstato Int,
@idcomune 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 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.idgruppo=@idgruppo
And T.datapartenza Is Null
END[/CODE]
Partiamo dall'inizio, la tabella del db è la seguente:
) ON [PRIMARY]
supponiamo che inserisco i seguenti record:
Eseguendo una select avremo il seguente scenario:
[CODE]
Select * From archivio_mov_new
OUTPUT
1 1000 60038 21/09/2008 0.00.00 NULL 0 58091 0 0
2 1000 60038 21/09/2008 0.00.00 NULL 0 58091 0 0
3 1000 60038 21/09/2008 0.00.00 NULL 0 58091 0 0
4 1000 60038 22/09/2008 0.00.00 NULL 0 58091 0 0
5 1000 60038 22/09/2008 0.00.00 NULL 0 58091 0 0
7 1000 60038 22/09/2008 0.00.00 NULL 0 58091 0 0
8 1000 60038 22/09/2008 0.00.00 NULL 0 58091 0 0
9 1000 60038 22/09/2008 0.00.00 NULL 0 58091 0 0
[/CODE]
Allora se eseguo la stored sopra descritta attraverso un ciclo di vb dicendo quante volte deve essere eseguita per aggiornara la data di partenza, se la faccio
eseguire anche solo una volta settando la data di paretnza = 22-09-2008 si dovrebbe aggiornare solamente il primo record libero che ha i requisiti richiesti ossia
nel nostro caso il record che ha come Iddb=1 mentre mi si aggiorna sia questo che il record che ha idbd=4
Come mai?
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com