Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Errore in utilizzo variabile in select
giovedì 03 luglio 2008 - 09.54
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
stena
Profilo
| Junior Member
78
messaggi | Data Invio:
gio 3 lug 2008 - 09:54
Ho una funzione, dove il filtro di selezione cambia in base ai parametri passati, poichè alcune volte qualche parametro potrebbe essere null e quindi
non inserito nel filtro.
Utilizzo una variabile @where per creare il filtro corrispondente, solo che all'atto dell'esecuzione mi viene segnalato l'errore sotto riportato.
Esempio:
declare @where varchar(MAX)
set @where = ' where (a=1) and (b=2) and (c=3)'
select * from tabella + @where
Errore segnalato:
Conversione non riuscita durante la conversione del valore varchar ' where (a=1) and (b=2) and (c=3)' nel tipo di dati int.
grazie per eventuali consigli.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 3 lug 2008 - 10:02
>Ho una funzione, dove il filtro di selezione cambia in base ai
>parametri passati, poichè alcune volte qualche parametro potrebbe
>essere null e quindi
>non inserito nel filtro.
Ciao Stefano,
che DBMS utilizzi?
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stena
Profilo
| Junior Member
78
messaggi | Data Invio:
gio 3 lug 2008 - 10:05
Utilizzo Sql Server 2005.
ciao e grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 3 lug 2008 - 10:11
>Utilizzo Sql Server 2005.
In SQL Server non è possibile concatenare in questo modo literal e variabili ma occorre costruire l'intero comando SQL ed eseguirlo tramite EXEC oppure sp_executesql.
Ad ogni modo entrambe le tecniche sono sconsigliate dato che oltre a causare problemi di performance, aprono la strada ad attacchi di tipo SQL Injection.
Leggi attentamente questo articolo di Erland:
http://www.sommarskog.se/dynamic_sql.html
Una possibile soluzione potrebbe essere quella proposta da Itzik che fa uso di SQL Dinamico ma con tutti i controlli del caso oppure quella ancora più elegante basata su UDF Table Valued proposta da Marcello:
http://groups.google.it/group/microsoft.public.it.sql/browse_thread/thread/59359884f3bc01d8/
>ciao e grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stena
Profilo
| Junior Member
78
messaggi | Data Invio:
gio 3 lug 2008 - 10:26
ok, ora do un'occhiata ai vari post che mi hai segnalato.
Il problema nasceva dal fatto che la funzione ha 4 parametri in ingresso e talvolta qualcuno può essere null; e cercavo un metodo per non dover duplicare codice.
ciao e grazie ancora.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 3 lug 2008 - 10:29
>Il problema nasceva dal fatto che la funzione ha 4 parametri
>in ingresso e talvolta qualcuno può essere null; e cercavo un
>metodo per non dover duplicare codice.
Nel thread segnalato troverai la soluzione al problema
>ciao e grazie ancora.
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !