以下是腳本內容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
--SQLQuery Create By Faywool
create
proc Proc_OutPutTest
--創建
@numA
int
,
--numA為存儲過程的參數
@numB
int
,
--numB為另一參數
@numReturn
int
output
--此為Output,也就是存儲過程的返回值
as
begin
if(@numA>@numB)
set
@numReturn=@numA
else
set
@numReturn=@numB
--A>B的時候返回A,否則返回B
end
go
declare
@numReceive
int
--先聲明一個變量用來接收存儲過程的返回值
exec
Proc_OutPutTest 1,2, @numReceive
output
--調用存儲過程並用@numReturn接收存儲過程的返回值
select
@numReceive
--將會返回(1,2)中較大的數字:2
go
create
proc Proc_OutTest
--新建存儲過程
@numC
int
,
--參數C
@numD
int
,
--參數D
@numE
int
out
--參數E用來返回
as
begin
if(@numC>@numD)
set
@numE=@numC
--如果C>D,將C賦值給E
else
set
@numE=@numD
--否則將D賦值給E
end
go
declare
@numOutReceive
int
--聲明一個變量
set
@numOutReceive=10000
--將變量賦值為10000
select
@numOutReceive
--變量變為10000
exec
Proc_OutTest 1,2, @numOutReceive
out
--將(1,2,@numOutReceive)三個數字傳入存儲過程
select
@numOutReceive
--再看變量就變成2了
--總結:
--Out是參數,傳進、傳出,缺一不可,在存儲過程定義的時候一定要有out標識,
--在調用該存儲過程的時候也要有out標識
--OutPut則是相當於存儲過程的返回值
--不用傳進,也不能傳進
--它是在存儲過程中定義,並且輸出的
-- 一句話:Out相當於C#中的ref參數(傳進、傳出缺一不可),而且傳進傳出的時候都要標識為ref
-- OutPut則為C#中的方法返回值類型,在方法定義時就已經定好了
|