儲存過程 返回值 procedure return values
阿新 • • 發佈:2019-01-28
儲存過程有三種返回:
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 45 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的引數,也會改成整數