我試過如下:T-SQL EXEC與sp_exec
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;
而結果:
IDexec IDspexec
-----------------------
500038 iddelegat
我不明白爲什麼sp_executesql
不返回相同的結果EXECUTE
。正確的返回值僅在EXECUTE
聲明中。看來sp_executesql
不會計算字符串'iddelegat'來返回列。