Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Gán kết quả của sql động cho biến

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn nhóm hàng phù hợp với tất cả các mục trong danh sách

  2. Khắc phục sự cố về hiệu suất CPU của máy chủ SQL

  3. Hợp nhất phiên bản SQL Server bằng cách phân cụm và xếp chồng

  4. Cách khắc phục “tên hồ sơ không hợp lệ” khi cập nhật hồ sơ thư cơ sở dữ liệu trong SQL Server (T-SQL)

  5. Sử dụng OBJECT_NAME () để lấy tên đối tượng từ object_id của nó trong SQL Server