>declare > @KeyFieldValue int = 123456, > @FileName varchar(25) = 'SuperVisionLevel', > @KeyFieldName varchar(10) = 'LevelKey', > @FileList varchar(300) = 'LevelKey,CountyOffenderKey,SupvLevel,BeginDate,AuditDate,', > @Name varchar(50), > @SID varchar(30), > @PID varchar(30) > > >declare @cLoc int, @strlen int, @ThisField varchar(25), > @ColValues varchar(250), @ColCnt int, @ThisValue nvarchar(30), > @ThisSQL nvarchar(300), @HoldList varchar(300) > >set @ColValues = '' >set @ColCnt = 1 >set @strlen = len(@FileList) >set @HoldList = @FileList >while @strlen > 0 >begin > set @strlen = len(@FileList) > set @cloc = charindex(',', @FileList) > set @ThisField = substring(@FileList, 1, @cloc-1) > set @FileList = substring(@FileList, @cloc+1, @strlen - (@cloc)) > print @FileList > set @ThisSQL = '(Select ' + @ThisField + ' from ' > + @FileName + ' where ' + @KeyFieldName + ' = ' + cast(@KeyFieldValue as Varchar) + ')' > exec sp_executesql @ThisSQL, @ThisValue out -- This works and shows result in 'results' tab >print @ThisSQL -- Nothing prints here > set @ColValues = @ColValues + ';' + @ThisValue -- This...not so much, and when > set @strlen = len(@FileList) >end >>
exec sp_executesql @ThisSQL, @ThisValue out -- This works and shows result in 'results' tabThe second parameter of this SP is declaration of parameters for the passed dynamic sql.
... set @ThisSQL = '(Select @TheOutptValue = CAST(' + @ThisField + ' as nvarchar(30)) from ' + @FileName + ' where ' + @KeyFieldName + ' = ' + cast(@KeyFieldValue as Varchar) + ')' exec sp_executesql @ThisSQL, N'@ThisValue nvarchar(30) OUTPUT', @ThisValue = @ThisValue print TheOutptValue ...