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
Exec di una stringa
venerdì 12 settembre 2014 - 12.14
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
ven 12 set 2014 - 12:14
Salve a tutti, sto per chiedere un'eresia
Ho una select "costruita" in una stringa di cui ci faccio un execute. Fin qui tutti ok, ora mi trovo nel caso in cui, una campo che vado a selezionare nella select, dovrebbe diventare parte dell'exec.
Cerco di spiegarmi meglio:
SET @FORMULA ='
SELECT
CASE campo WHEN 2 THEN
CASE WHEN '+ @FORMULA_APPO +' THEN
print(operazione1)
END
ELSE print(operazione2)
END AS mio_campo
,FORMULA'
Dove in pratica @FORMULA_APPO = FORMULA
Questo è un'estratto di tutta la select ovviamente, spero serva a far capire cosa chiedo
Grazie!
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 12 set 2014 - 12:37
>Salve a tutti, sto per chiedere un'eresia
ciao
>Ho una select "costruita" in una stringa di cui ci faccio un
>execute. Fin qui tutti ok, ora mi trovo nel caso in cui, una
>campo che vado a selezionare nella select, dovrebbe diventare
>parte dell'exec.
non è un'eresia, ma è una cosa mooolto pericolosa, a causa della possibilità di un sql injection (per maggiori dettagli, leggi qui:
http://www.dotnethell.it/articles/SQL-Injection-Tutorial-Security.aspx
)
>Dove in pratica @FORMULA_APPO = FORMULA
>Questo è un'estratto di tutta la select ovviamente, spero serva
>a far capire cosa chiedo
o lavori sulla stringa prima andando a fare concatenazione di stringhe, oppure usi la sp_executeSQL (
http://msdn.microsoft.com/it-it/library/ms188001.aspx
) passandole il parametro necessario.
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
ven 12 set 2014 - 12:55
Grazie della tempestiva risposta, nel caso della mia parte di select scritta sopra, come andrebbe riscritta? Sto provando ma non mi è chiaro
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 12 set 2014 - 14:12
>Grazie della tempestiva risposta, nel caso della mia parte di
>select scritta sopra, come andrebbe riscritta? Sto provando ma
>non mi è chiaro
dipende quale delle due soluzioni vuoi seguire tra quelle che ti ho proposto.
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
ven 12 set 2014 - 15:47
Vorrei usare la sp_executeSQL Mi sono informato sulla sicurezza e mi dicono che posso usarla
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 15 set 2014 - 11:57
>Vorrei usare la sp_executeSQL Mi sono informato sulla sicurezza
>e mi dicono che posso usarla
ok, cerca di mandarmi un esempio preciso di quanto vuoi fare
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
memmo77
Profilo
| Expert
683
messaggi | Data Invio:
lun 15 set 2014 - 12:51
Ciao e buongiorno, un esempio potrebbe essere questo:
execute('
SELECT
CAMPO
,CAMPO_1
,CAMPO_2
,CASE CAMPO WHEN 1 THEN
CASE WHEN @FORMULA THEN --QUI VA INSERITA LA "FORMULA"
IMPORTO / 1000
END
ELSE NEW_IMPORTO
END AS NEW_IMPORTO
,@FORMULA = CAMPO_2
,IMPORTO
FROM
TABLE_1
')
--DOVE CAMPO_2 RESTITUISCE UNA STRINGA DEL TIPO (CAMPO = 1 AND CAMPO_1 = 2)
In pratica il campo CAMPO_2 dovrebbe costiture parte integrante dell'exec.
Spero di essermi spiegato.
Grazie mille!
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 17 set 2014 - 13:15
In quel caso dovrai allora usare la EXEC, la sp_executeSQL sarebbe superflua, poichè nella stringa che gli passi dovresti fare una EXEC..
Quindi meglio solo la EXEC.
Cosa non riesci a fare concatenando stringhe? Una volta fatta la concatenazione basta passare la stringa alla funzione EXEC.
Dove ti blocchi?
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
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 !