DECLARE @query as varchar(200);
SET @query = 'SELECT COUNT(*) FROM table';
Làm cách nào để thực thi @query
và ngoài ra, có cách nào để lưu trữ kết quả truy vấn trực tiếp khi gán biến không?TSQL - cách thực thi truy vấn dưới dạng biến?
DECLARE @query as varchar(200);
SET @query = 'SELECT COUNT(*) FROM table';
Làm cách nào để thực thi @query
và ngoài ra, có cách nào để lưu trữ kết quả truy vấn trực tiếp khi gán biến không?TSQL - cách thực thi truy vấn dưới dạng biến?
Bạn có thể sử dụng sp_executesql
với thông số output
để truy xuất kết quả vô hướng.
DECLARE @query as nvarchar(200), @count int;
SET @query = N'SELECT @count = COUNT(*) FROM table';
EXEC sp_executesql @query,
N'@count int OUTPUT',
@count = @count OUTPUT
SELECT @count AS [@count]
Bạn có thể làm điều đó như thế này:
exec (@query)
hay, tốt, như thế này:
execute sp_executesql @query
Mọi chi tiết, kiểm tra this MSDN article.
Cảm ơn bạn, không chắc chắn nếu tôi hiểu mã một cách thích hợp, liệu nó có gán kết quả truy vấn vào biến số, theo OUTPUT không? – Malyo
@Malyo - Nó khai báo một biến '@ count' trong phạm vi bên ngoài. Điều này được thông qua như một tham số đầu ra trong cuộc gọi 'sp_executesql' có nghĩa là gán cho tham số đầu ra được truyền cho biến đó. Xem [TSQL Basics II - Tham số ngữ nghĩa tham số] (http://blogs.msdn.com/b/sqlprogrammability/archive/2006/06/09/624531.aspx) để biết thêm về các tham số 'OUTPUT'. –