Stored Procedure con verifica risultati di una select

sabato 24 giugno 2006 - 16.05

squilibrio Profilo | Expert

Ciao, ho una SP nella quale effettuo un update, quello che però vorrei fare è introdurre, prima, una select, solo se la select non genera risultati devo eseguire l'update:

Select * from tabella Where Codice=@Codice and Campo=@Campo

solo se la select non genera risultati devo procedere ad eseguire un'operazione di update!

Grazie mille

alx_81 Profilo | Guru

Ciao,

basta fare, prima dell'update:
DECLARE @Counter int Select @Counter = COUNT(*) from tabella Where Codice=@Codice and Campo=@Campo IF @Counter > 0 BEGIN UPDATE... END

ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

lbenaglia Profilo | Guru

>basta fare, prima dell'update:
>
>DECLARE @Counter int
>
>Select @Counter = COUNT(*)
>from tabella Where Codice=@Codice
>and Campo=@Campo
>
>IF @Counter > 0
>BEGIN
> UPDATE...
>END

Ciao Alx81,

l'operazione di COUNT(*) è estremamente onerosa per il dbengine, soprattutto nel caso in cui la tabella base contenga un numero elevato di righe dato che comporta un table scan.

In questi casi il metodo più efficiente consiste nell'utilizzo della funzione EXISTS() come nel seguente esempio:

IF NOT EXISTS( SELECT * FROM dbo.Tabella WHERE Codice = @Codice AND Campo = @Campo ) BEGIN UPDATE... END

Ciao!

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

squilibrio Profilo | Expert

Grazie ad entrambi, in effetti la seconda sembra piu performante.

Buona serata a tutti

alx_81 Profilo | Guru

Già.. lo è
ottimo! grazie Lorenzo!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5