動態執行技術簡化動態排序
動態構建 SELECT 陳述式,使用 EXEC() 或 sp_executesql 執行:
sp_executesql 優勢 (SQL 2000/7.0)
BOL 建議優先使用 sp_executesql,優於 EXEC():參數化、計畫重用、安全性較佳。
權限模型關鍵限制
動態 SQL 打破所有權鏈,需額外授權:
- 條件:僅用 DML、所有物件同擁有者、無動態命令 → 可僅授予 EXEC 權限
- 動態排序不滿足第三條件 → 必須額外授予 Shippers 表的 SELECT 權限 給所有使用者/角色
欄位編號參數化兩種寫法
警告: ANSI SQL-99 不支援 ORDER BY 位置編號,最好避免使用 Listing 9 寫法。