執行預存程序要使用execute語法(可以簡寫為exec),在execute後面寫要執行的預存程序的名稱。
1
exec 預存程序名稱 @變數1 = '值1', @變數2 = '值2'
執行方式
1
2
3
4
5
6
7
8
--無參數
exec stored_porcedure
--以位置名稱(必須按照SP變數定義的順序)
exec stored_porcedure value1, value2,...
--以參數名稱(可以不用按照順序)
exec stored_porcedure @param1 = value1, @param2 = value2,...
指定引數
要指定引數時(要傳入的參數值),有兩種方式:
- 以位置來指定
- 以名稱來指定
1
2
exec uspTest 1, @result output --以位置來指定(須按sp定義的位置順序)
exec uspTest @result output, @id = 1 --以名稱來指定(按參數名稱不需要按順序)
以「位置」來指定引數時,引數的指定順序要與預存程序中定義的順序相同才行。
以「名稱」來指定引數就不需要按照順序。
引數(Argument) 是用於呼叫函式。
參數(Parameter) 是方法簽章(方法的宣告)。
範例
統計所指定商品ID的販賣數量的預存程序
1
2
3
4
5
6
7
8
9
10
--統計所指定商品ID的販賣數量的預存程序
create procedure uspGetSum
@id int, --要傳入的參數
@sum int output --輸出參數(要加上output)
as
begin
select @sum = sum(數量)
from 販賣資料
where 商品ID = @id
end
執行預存程序
以「位置」來指定引數
以「位置」來指定引數時,引數的指定順序要與預存程序中定義的順序相同才行。
1
exec uspTest 1, @result output
1
2
3
declare @result int --宣告變數
exec uspTest 1, @result output --執行sp。輸出參數要加上output
select @result --顯示結果
output可以簡寫為out
以「名稱」來指定引數
以參數名稱來指定引數,位置順序可以不同。
1
2
exec uspGetSum @id = 1, @sum = @result output --位置相同
exec uspGetSum @sum = @result output, @id = 1 --位置不同
1
2
3
declare @result int --宣告變數
exec uspGetSum @id = 1, @sum = @result output --執行sp。輸出參數要加上output
select @result --顯示結果
MSDN - 執行預存程序
[SQL] Stored Procedure 預存程序的建立與刪除
[SQL] Stored Procedure 預存程序的建立