创建带输出参数的存储过程

创建带输出参数的存储过程

语法:

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

 

转载于:https://www.cnblogs.com/zhangxudong-cnblogs/p/10946058.html

你可能感兴趣的:(创建带输出参数的存储过程)