📄 2.sql
字号:
/*输出参数*/
IF @nCount > 0
SELECT @bitResult = 1
ELSE
SELECT @bitResult = 0
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*添加一条商品信息,输出商品编号和执行结果*/
CREATE PROC dbo.GoodsAddNew
(
@GoodsName varchar(100), --商品名称
@Amount decimal(18, 2), --库存数量
@TypeID int, --类型编号
@UnitName varchar(100), --单位
@SupplierID int, --供货商编号
@Introduce varchar(1000), --商品介绍
@Remark varchar(1000), --备注
@ID int OUTPUT, --商品编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否存在当前商品名称,若是则不能添加
DECLARE @ExistName bit
EXEC ExistByName 'Goods', 'GoodsName', @GoodsName, @ExistName OUTPUT
IF @ExistName = 1 --当前商品名称已存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*添加记录*/
INSERT INTO Goods Values(@GoodsName, @Amount, @UnitName, @TypeID, @SupplierID, @Introduce, @Remark)
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
BEGIN
SELECT @ID = (SELECT MAX(GoodsID) FROM Goods)
SELECT @ReturnValue = 0
END
ELSE IF @ErrNo = 2627 --违反唯一约束
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知错误
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事务
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*删除一条商品信息,输出执行结果*/
CREATE PROC dbo.GoodsDelete
(
@GoodsID int, --商品编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在当前商品编号,若否则不能删除*/
DECLARE @ExistID bit
EXEC ExistByID 'Goods', 'GoodsID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 0 --当前商品编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
/*
手动维护数据完整性的代码。如果没有创建外键约束,请取消这段代码的注释
验证进货信息是否包含当前商品,若是则不能删除
EXEC ExistByID 'Buy', 'BuyID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
验证销售信息是否包含当前商品,若是则不能删除
EXEC ExistByID 'Sale', 'SaleID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
*/
/*删除记录*/
DELETE FROM Goods WHERE GoodsID = @GoodsID
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 547 --发生外键冲突
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知错误
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事务
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*添加一条商品类型,输出类型编号和操作结果*/
CREATE PROC dbo.GoodsTypeAddNew
(
@TypeName varchar(100), --类型名称
@Remark varchar(1000), --备注
@ID int OUTPUT, --类型编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否存在当前类型名称,若是则不能添加
DECLARE @ExistName bit
EXEC ExistByName 'GoodsType', 'TypeName', @TypeName, @ExistName OUTPUT
IF @ExistName = 1 --当前类型名称已存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*添加记录*/
INSERT INTO GoodsType Values(@TypeName, @Remark)
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
BEGIN
SELECT @ID = (SELECT MAX(TypeID) FROM GoodsType)
SELECT @ReturnValue = 0
END
ELSE IF @ErrNo = 2627 --违反唯一约束
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知错误
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事务
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*删除一条商品类型,输出执行结果*/
CREATE PROC dbo.GoodsTypeDelete
(
@TypeID int, --类型编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在当前类型编号,若否则不能删除*/
DECLARE @ExistID bit
EXEC ExistByID 'GoodsType', 'TypeID', @TypeID, @ExistID OUTPUT
IF @ExistID = 0 --当前类型编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN
END
/*
手动维护数据完整性的代码。如果没有创建外键约束,请取消这段代码的注释
验证商品记录是否引用了该类型,若是则不能删除
EXEC ExistByID 'Goods', 'TypeID', @TypeID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
*/
/*删除记录*/
DELETE FROM GoodsType WHERE TypeID = @TypeID
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 547 --发生外键冲突
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知错误
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事务
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*更新一条商品类型,输出执行结果*/
CREATE PROC dbo.GoodsTypeUpdate
(
@TypeID int, --类型编号
@TypeName varchar(100), --类型名称
@Remark varchar(1000), --备注
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在当前类型编号,若否则不能更新*/
DECLARE @ExistID bit
EXEC ExistByID 'GoodsType', 'TypeID', @TypeID, @ExistID OUTPUT
IF @ExistID = 0 --当前类型编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否与其他记录的类型名称相同,若是则不能更新
DECLARE @ExistName bit
EXEC ExistNameWithoutID 'GoodsType', 'TypeID', @TypeID, 'TypeName', @TypeName, @ExistName OUTPUT
IF @ExistName = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
*/
/*更新记录*/
UPDATE GoodsType SET TypeName = @TypeName, Remark = @Remark WHERE TypeID = @TypeID
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 2627 --违反唯一约束
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知错误
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事务
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*更新一条商品信息,输出执行结果*/
CREATE PROC dbo.GoodsUpdate
(
@GoodsID int, --商品编号
@GoodsName varchar(100), --商品名称
@Amount decimal(18, 2), --库存数量
@TypeID int, --类型编号
@UnitName varchar(100), --单位
@SupplierID int, --供货商编号
@Introduce varchar(1000), --商品介绍
@Remark varchar(1000), --备注
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在当前商品编号,若否则不能更新*/
DECLARE @ExistID bit
EXEC ExistByID 'Goods', 'GoodsID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 0 --当前商品编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否与其他记录的商品名称相同,若是则不能更新
DECLARE @ExistName bit
EXEC ExistNameWithoutID 'Goods', 'GoodsID', @GoodsID, 'GoodsName', @GoodsName, @ExistName OUTPUT
IF @ExistName = 1 --与其他记录的商品名称相同
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*更新记录*/
UPDATE Goods SET GoodsName = @GoodsName, Amount = @Amount, TypeID = @TypeID, UnitName = @UnitName, SupplierID = @SupplierID, Introduce = @Introduce, Remark = @Remark WHERE GoodsID = @GoodsID
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 2627 --违反唯一约束
BEGIN
ROLLBACK TRANSACTION --遇到错误则回滚事务
SELECT @ReturnValue = 3
RETURN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -