Bạn có thể sử dụng sp_executesql với tham số đầu ra.
declare @S nvarchar(max) = 'select @x = 1'
declare @xx int
set @xx = 0
exec sp_executesql @S, N'@x int out', @xx out
select @xx
Kết quả:
(No column name)
1
Chỉnh sửa
Trong mẫu của tôi @S
thay vì @template
của bạn . Như bạn có thể thấy, tôi gán một giá trị cho @x
vì vậy bạn cần sửa đổi @template
vì vậy nó chỉ định nội bộ chuỗi được phân tách bằng dấu phẩy cho biến mà bạn xác định trong đối số thứ hai của mình thành sp_executesql
. Trong mẫu của tôi N'@x int out'
. Bạn có thể muốn một varchar(max)
tham số đầu ra. Một cái gì đó như N'@Result varchar(max) out'
Đây là một ví dụ khác về việc xây dựng một chuỗi được phân tách bằng dấu phẩy từ master..spt_values
declare @template nvarchar(max)
set @template =
'select @Result += cast(number as varchar(10))+'',''
from master..spt_values
where type = ''P''
'
declare @CommaString varchar(max)
set @CommaString = ''
exec sp_executesql @template, N'@Result varchar(max) out', @CommaString out
select @CommaString