Scelta di Query Parametrica

martedì 20 gennaio 2009 - 00.23

Aragorn2004 Profilo | Newbie

SQL server 2000 + VB6 + ADO
Ciao, ho il seguente problema ho una maschera con N campi. L'utente può cambiare uno o più campi.
Vorrei sapere se si può fare una query che utilizza solo i parametri relativi ai campi che sono stati modificati.
Quello che chiedo è questo e forse è una ca...ta: si può scrivere sul server una query di update che abbia tanti parametri quanti sono i campi della tabella e poi da codice valorizzare solo quelli utilizzati (per esempio solo 2 parametri).

Oppure la query si costruisce tutta via codice inserendo i parametri interessati.

Inoltre è meglio utilizzare un command di ADO ovvero T-SQL per fare questa cosa ?

Grazie a quanti dedicheranno il loro tempo.

Ciao.

alx_81 Profilo | Guru

>Ciao,
Ciao!

>ho il seguente problema ho una maschera con N campi. L'utente
>può cambiare uno o più campi.
>Vorrei sapere se si può fare una query che utilizza solo i parametri
>relativi ai campi che sono stati modificati.
>Quello che chiedo è questo e forse è una ca...ta: si può scrivere
>sul server una query di update che abbia tanti parametri quanti
>sono i campi della tabella e poi da codice valorizzare solo quelli
>utilizzati (per esempio solo 2 parametri).
>Oppure la query si costruisce tutta via codice inserendo i parametri
>interessati.
Se vuoi utilizzare un metodo per fare l'update senza ricorrere a sql dinamico qualcosa puoi fare.
Non è il massimo, ma puoi scrivre la tua update simile a questa:

UPDATE <tua tabella> SET campo1 = CASE WHEN @param1 IS NULL THEN campo1 ELSE @param1 END , campo2 = CASE WHEN @param2 IS NULL THEN campo2 ELSE @param2 END ... WHERE <tua condizione>

In questo modo, anche se non passi il parametro il campo non si aggiorna (o meglio, si aggiorna a se stesso)

>Inoltre è meglio utilizzare un command di ADO ovvero T-SQL per fare questa cosa ?
In questi casi, in cui sei costretto a rendere dinamico il comando (o a ricorrere a sotterfugi come quello che ti ho indicato) sarebbe buona cosa comporre il comando come stringa e poi eseguirlo con sp_executeSQL (una stored procedure di sistema di sql server) che è ottimizzata per questo tipo di operazioni.
Comunque credo che riuscirai a cavartela con il metodo indicato sopra.


>Grazie a quanti dedicheranno il loro tempo.
di nulla!


--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
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