Tabella come parametro

giovedì 26 aprile 2007 - 19.15

bluland Profilo | Guru

Ciao,
e' questa la sintassi:

CREATE PROCEDURE PGTOSQL @SN AS VARCHAR(100) AS DECLARE @TABLE VARCHAR(100); SET @TABLE = (SELECT Tablename FROM SERIALS WHERE SERIAL = @SN) SET @PN =( SELECT pn FROM ' + @TABLE + ' WHERE SERIAL = @SN) .... ....

??

ecco l'errore:
Incorrect syntax near ' + @TABLE + '.

saluti

--------------------
Vincenzo PESANTE

lbenaglia Profilo | Guru

>SET @PN =( SELECT pn FROM ' + @TABLE + ' WHERE SERIAL = @SN)
>
>
>....
>....
>
>??
>
>ecco l'errore:
> Incorrect syntax near ' + @TABLE + '.

Ciao Vincenzo,

Eh si, si tratta di un bell'errore di sintassi
Il nome di una tabella non è parametrizzabile, pertanto l'unico modo per risolvere la questione sarebbe quello di ricorrere al Dynamic SQL.
Questa tecnica se usata a sproposito (esattamente come stai cercando di fare tu ) oltre ad essere estremamente inefficiente, comporta dei seri problemi di sicurezza dato che permette attacchi di tipo SQL Injection.
In questo articolo di Erland troverai spiegati tutti i pericoli ai quali stai per andare incontro:

"The curse and blessings of dynamic SQL"
http://www.sommarskog.se/dynamic_sql.html

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

bluland Profilo | Guru

si gia lessi questo articolo tempo fa (consigliato proprio da te), l'ho rispulciato, e tutto ha funzionato o almeno avrebbe dovuto, poiche mi sto interfacciando con db postgress e sto avendo un po' di problemi, ho seguito a proposito del dynamic sql anche questo articolo:
http://www.sqlteam.com/item.asp?ItemID=4599


saluti, grazie
--------------------
Vincenzo PESANTE
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