Dove sbaglio in questa If?

venerdì 12 settembre 2008 - 13.15

trinity Profilo | Guru

Dove sbaglio nella If?
In pratica con questa stored seleziono il campo dataarrivo e faccio il controllo con il parametro @datapartenza se quest'ultimo è + piccolo della data di arrivo allora non deve essere eseguita l'update e mi deve uscire un messaggio di errore che poi dovrei gestire in vb.

CREATE PROCEDURE [dbo].[InsC591_New] ( @Codalbergo Int, @CodComAlbergo Int, @idstato Int, @idcomune Int, @idgruppo Int, @DataPartenza Smalldatetime ) AS BEGIN WITH CTE_GetID AS ( SELECT dataarrivo,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 ) If t.dataarrivo > @datapartenza RAISERROR ('Data partenza non valida') Else 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 END
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

lbenaglia Profilo | Guru

>WITH CTE_GetID AS
>(
> SELECT dataarrivo,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
>)
>If t.dataarrivo > @datapartenza
Dai BOL: "A CTE must be followed by a single SELECT, INSERT, UPDATE, or DELETE statement that references some or all the CTE columns".
Di conseguenza la IF non può essere utilizzata.

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

>>WITH CTE_GetID AS
>>(
>> SELECT dataarrivo,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
>>)
>>If t.dataarrivo > @datapartenza
>Dai BOL: "A CTE must be followed by a single SELECT, INSERT,
>UPDATE, or DELETE statement that references some or all the CTE
>columns".
>Di conseguenza la IF non può essere utilizzata.


ho capito, ma come potrei allora gestire tramite sql che il parametro della datapartenza deve essere sempre + grande della data di arrivo dei record che vengono selezionati dalla select?

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