創建帶輸出參數的存儲過程
語法:
create proc 存儲過程名
@參數1 數據類型=默認值 output,
@參數2 數據類型=默認值 output
as
sql語句
go
例子:
1 --創建帶輸入輸出參數的存儲過程 2 /* 3 題目要求 4 向母嬰用品這個類添加一種商品,要求成功后把商品的編號輸出 5 */ 6 7 use E_Market 8 go 9 10 if exists(select * from sysobjects where name='usp_InsertCommodity') 11 drop proc usp_InsertCommodity 12 go 13 create proc usp_InsertCommodity 14 @SortName varchar(50), --類別名稱 15 @CommodityName varchar(100), --商品名稱 16 @inprice money, --進貨價 17 @outprice money, --銷售價 18 @Amount int, --庫存liang 19 @CommodityId int output --商品編號,輸出參數 20 as 21 --根據輸入的類別名稱查詢類別編號 22 declare @SortId int 23 select @SortId=SortId from CommoditySort where SortName=@SortName 24 --判斷類別名稱是否正確, 25 if @SortId is null 26 begin 27 print '對不起,輸入的類別不存在!' 28 return --后面的代碼無條件,退出了創建的存儲過程 29 end 30 --向商品信息表插入數據 31 insert into CommodityInfo(SortId,CommodityName,InPrice,OutPrice,Amount) 32 values(@SortId,@CommodityName,@inprice,@outprice,@Amount) 33 --判斷錯誤號是否大於0如果大於0說明插入有誤 34 if @@ERROR >0 35 begin 36 print '插入信息失敗!' 37 return 38 end 39 set @CommodityId=@@IDENTITY 40 go 41 42 --使用帶輸入輸出參數的存儲過程 43 --1)聲明變量來調用(隱式調用,要求參數的順序與存儲過程參數的定義的順序相同) 44 declare @sortName varchar(50), @commodityName varchar(100), 45 @inprice money,@outprice money, @amount int, @commodityId int 46 select @sortName='母嬰用品',@commodityName='星飛帆1段', @inprice=100, @outprice=245,@amount=1000 47 exec usp_InsertCommodity @sortName,@commodityName,@inprice,@outprice,@amount,@commodityId output 48 print'添加商品成功,商品編號為:' + convert(varchar(5), @commodityId) 49 --檢測插入的信息 50 select * from CommodityInfo