Home [SQL] Stored Procedure 預存程序的執行方法 (Exec)
Post
Cancel

[SQL] Stored Procedure 預存程序的執行方法 (Exec)

執行預存程序要使用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. 以名稱來指定
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 預存程序的建立

This post is licensed under CC BY 4.0 by the author.