1. 程式人生 > >儲存過程 返回值 procedure return values

儲存過程 返回值 procedure return values

儲存過程有三種返回: 
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的引數,也會改成整數