Câu lệnh EXECUTE chỉ đơn giản là có một ngữ pháp khác sau đó các câu lệnh khác như SELECT và SET. Ví dụ:hãy quan sát phần cú pháp ở đầu hai trang sau.
EXECUTE tuyên bố: http://msdn.microsoft.com/en-us/ thư viện / ms188332.aspx
Câu lệnh SET: http://msdn.microsoft.com/en-us/ thư viện / ms189484.aspx
Cú pháp EXECUTE chỉ chấp nhận một giá trị
Trong khi cú pháp cho SET chấp nhận một biểu thức
Một giá trị về cơ bản chỉ là một hằng số được mã hóa cứng, nhưng một biểu thức sẽ được đánh giá. Nó giống như có varchar 'CHỌN 1 + 1'. Nó chỉ là một giá trị varchar ngay bây giờ. Tuy nhiên, bạn có thể đánh giá chuỗi như thế này:
EXEC('SELECT 1 + 1')
Tôi cho rằng tất cả những gì tôi đang chỉ ra là lệnh EXEC không cho phép các biểu thức theo định nghĩa, mà bạn dường như đã phát hiện ra rồi. Tôi không biết ý định của các nhà phát triển T-SQL là gì khi họ làm theo cách đó. Tôi cho rằng ngữ pháp sẽ trở nên khó hiểu nếu bạn được phép ném các truy vấn con vào trong các truy vấn con trong danh sách tham số của một thủ tục được lưu trữ.
Biểu thức T-SQL: http://msdn.microsoft.com/en- us / library / ms190286.aspx