系統存儲過程,sp_executesql
語言在這裡!
sp_executesql
執行可以多次重用或動態生成的 Transact-SQL 語句或批處理。Transact-SQL 語句或批處理可以包含嵌入參數。
語法
sp_executesql [@stmt =] stmt
[
{, [@params =] N'@parameter_name data_type [,...n]' }
{, [@param1 =] 'value1' [,...n] }
]
參數
[@stmt =] stmt
包含 Transact-SQL 語句或批處理的 Unicode 字符串,stmt 必須是可以隱式轉換為 ntext 的 Unicode 常量或變量。不允許使用更復雜的 Unicode 表達式(例如使用 + 運算符串聯兩個字符串)。不允許使用字符常量。如果指定常量,則必須使用 N 作為前綴。例如,Unicode 常量 N'sp_who' 是有效的,但是字符常量 'sp_who' 則無效。字符串的大小僅受可用數據庫服務器內存限制。
stmt 可以包含與變量名形式相同的參數,例如:
N'SELECT * FROM Employees WHERE EmployeeID = @IDParameter'
stmt 中包含的每個參數在 @params 參數定義列表和參數值列表中均必須有對應項。
[@params =] N'@parameter_name data_type [,...n]'
字符串,其中包含已嵌入到 stmt 中的所有參數的定義。該字符串必須是可以隱式轉換為 ntext 的 Unicode 常量或變量。每個參數定義均由參數名和數據類型組成。n 是表明附加參數定義的占位符。stmt 中指定的每個參數都必須在 @params 中定義。如果 stmt 中的 Transact-SQL 語句或批處理不包含參數,則不需要 @params。該參數的默認值為 NULL。
[@param1 =] 'value1'
參數字符串中定義的第一個參數的值。該值可以是常量或變量。必須為 stmt 中包含的每個參數提供參數值。如果 stmt 中包含的 Transact-SQL 語句或批處理沒有參數,則不需要值。
n
附加參數的值的占位符。這些值只能是常量或變量,而不能是更復雜的表達式,例如函數或使用運算符生成的表達式。
返回代碼值
0(成功)或 1(失敗)