I tried the following:
declare @var2 nvarchar(30)
declare @qsql nvarchar(100)
set @var2 = N'iddelegat'
exec ('select max('+ @var2 + ') as IDexec from delegat');
set @qsql = 'select max(@varsp) as IDspexec from delegat';
exec sp_executesql @qsql, N'@varsp nvarchar(30)', @var2;
And the result:
IDexec IDspexec
-----------------------
500038 iddelegat
I could not understand why sp_executesql
does not return the same result as EXECUTE
. The right returned values are only in EXECUTE
statement. It seems that sp_executesql
does not evaluate the string 'iddelegat' to return the column.