存儲過程有三種返回:
1. 用return返回int型數據
2. 用返回參數返回結果,可以返回各種數據類型(通過游標來循環查詢結果每一行)
3. 直接在存儲過程中用select返回結果集,可以是任意的select語句,這意味着是任意的返回結果集
例子:1
use tempdb; create procedure test1 as begin if 1=1 return 1 else return 2 end declare @index int exec @index= test1 select @index drop procedure test1
如下圖,得到返回值 1
例子:2
use tempdb; create procedure test1 (@paramater varchar(20) output) as begin if 1=1 set @paramater='01' else set @paramater='02' end declare @index varchar(10) exec test1 @index output select @index as [index] drop procedure test1
例子:3
1 use tempdb; 2 3 create procedure test1 4 5 as 6 begin 7 declare @paramater varchar(21) 8 set @paramater='01' 9 select @paramater 10 end 11 12 exec test1 13 14 /*declare @index varchar(10) 15 exec @index=test1 16 select @index as [index]*/ 17 18 drop procedure test1
以上是3種調用的返回方式。
如果我在數據庫,使用"執行存儲過程"的方式執行存儲過程,我們會活動另外一種結果。
為什么一個存儲過會有兩個結果呢。
我猜測用系統的存儲過程可能會有2個值,1、結果集;2、return value.
帶着猜測,修改了存儲過程,然后得到了下圖的答案。
帶着解決問題的后愉悅的心情,再說一個小問題。
return只能返回整數,就算varchar的參數,也會改成整數