使用RETURN关键字进行返回
遇到RETURN关键字存储过程中的后续代码无条件不执行,即退出了当前的存储过程
根据返回值对存储过程的结果作出相应的处理
--创建带返回值的存储过程
/*
向母婴用品中添加一条商品信息
*/
USE E_Market
GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_InsertCommodityReturn')
DROP PROC usp_InsertCommodityReturn
GO
CREATE PROC usp_InsertCommodityReturn
@sortName varchar(50),
@commodityName varchar(100),
@inprice money,
@outprice money,
@amount int
AS
DECLARE @sortid int
SELECT @sortid=SortId FROM CommoditySort WHERE SortName=@sortName
--根据类别名称查看类别编号是否存在
IF @sortid IS NULL
BEGIN
RETURN -1 --用-1来代替名称不正确
END
--向商品信息表添加一条商品信息
INSERT INTO CommodityInfo(SortId,CommodityName,Inprice,Outprice,Amount)
Values(@sortName,@commodityName,@inprice,@outprice,@amount)
IF @@ERROR>0
BEGIN
RETURN 0 --用0来代表插入信息失败
END
ELSE
BEGIN
RETURN @@IDENTITY --返回的是商品的编号
END
--来使用带返回的存储过程,返回值有三个,0,-1,商品编号
--使用显示调用
DECLARE @Result int --接受存储过程的返回值
EXEC @Result=usp_InsertCommodityReturn @sortName='其他',@commodityName='好吃点',
@inprice=3.5,@outprice=7.6,@amount=100
IF @Result=-1
BEGIN
PRINT '对不起,输入的类别名称不存在!'
END
ELSE IF @Result=0
BEGIN
PRINT '插入信息失败!'
END
ELSE
BEGIN
PRINT '添加商品成功!商品编号为:'+CONVERT(varchar(5),@Result)
END
GO