In input il nome della tabella
In input :
@psnometabella = "Tblprova"
declare @pinewid int
declare @str varchar(50)
set @str = ' SELECT MAX(ID) FROM ' + @PSNOMETABELLA
set @pinewid = exec(@str)
Mi da sintassi non corretta in prossimità di EXEC ...
Come posso mettere il contenuto della mia "Select" composta nella variabile?
declare @str nvarchar (50)
set @str= ' set @intMax= (SELECT MAX(ID) FROM ' + @PSNOMETABELLA + ')'
exec sp_executesql @str, N'@intMax int output', @pinewid output
Ora in @pinewid c'è quello che cerchi.
Ciao, Alessandro
Ciao Darken,
Come riportano i Books Online, la sintassi dello statement EXEC[UTE] per
l'esecuzione di istruzioni dimaniche è:
EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )
Come vedi non è previsto un valore di ritorno, quindi non è possibile
recuperare il valore di MAX(ID) in questo modo.
Inoltre ti ricordo che utilizzando istruzioni SQL dinamiche incorri nel
pericolo di SQL Injection. Per maggiori informazioni leggi lo splendido
articolo del SQL Server MVP Erland Sommarskog "The curse and blessings of
dynamic SQL" http://www.algonet.se/~sommar/dynamic_sql.html
Se il campo ID ha la proprietà IDENTITY e ti interessa recuperare l'ultimo
valore generato per la tabella, potresti ricorrere alla funzione
IDENT_CURRENT().
Per maggiori informazioni leggi il paragrafo IDENT_CURRENT
URL:tsqlref.chm::/ts_ia-iz_82i1.htm sui Books Online.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org