Không có lý do gì để sử dụng SQL động tại đây. Khi bạn làm cần sử dụng SQL động, bạn nên xem xét sp_executesql
ưu tiên cao hơn EXEC()
. Có nhiều lý do, bao gồm:
-
sp_executesql
có nhiều khả năng sử dụng lại các kế hoạch truy vấn hơn (xem SQL động - EXEC (@SQL) so với EXEC SP_EXECUTESQL (@SQL) ); -
việc chuyển các tham số được gõ mạnh vào
sp_executesql
sẽ dễ dàng hơn nhiều (ngăn chặn việc chèn SQL tốt hơn việc nối một chuỗi); và, -
bạn cũng có thể lấy các biến từ trong phạm vi SQL động trở lại phạm vi gọi, ví dụ:
Đó không phải là một ví dụ rất hữu ích, nhưng nó là một vấn đề phổ biến khi thực thi các chuỗi động. Nhưng quan trọng hơn, bạn chỉ nên xem xét SQL động khi bạn phải làm như vậy, không phải là phương án đầu tiên.