📄 2.sql
字号:
@Introduce varchar(1000), --简要介绍
@Remark varchar(1000), --备注
@ID int OUTPUT, --类型编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否存在当前供货商名称,若是则不能添加
DECLARE @ExistName bit
EXEC ExistByName 'Supplier', 'SupplierName', @SupplierName, @ExistName OUTPUT
IF @ExistName = 1 --当前供货商名称已存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*添加记录*/
INSERT INTO Supplier Values(@SupplierName, @Contact, @Introduce, @Remark)
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
BEGIN
SELECT @ID = (SELECT MAX(SupplierID) FROM Supplier)
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.SupplierDelete
(
@SupplierID int, --供货商编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在供货商编号,若否则不能删除*/
DECLARE @ExistID bit
EXEC ExistByID 'Supplier', 'SupplierID', @SupplierID, @ExistID OUTPUT
IF @ExistID = 0 --供货商编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
/*
手动维护数据完整性的代码。如果没有创建外键约束,请取消这段代码的注释
验证商品记录是否引用了该供货商编号,若否则不能删除
EXEC ExistByID 'Goods', 'SupplierID', @SupplierID, @ExistID OUTPUT
IF @ExistID = 1 --引用了该供货商编号
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*删除记录*/
DELETE FROM Supplier WHERE SupplierID = @SupplierID
--记录当前的错误号
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.SupplierUpdate
(
@SupplierID int, --供货商编号
@SupplierName varchar(100), --供货商名称
@Contact varchar(1000), --联系方式
@Introduce varchar(1000), --简要介绍
@Remark varchar(1000), --备注
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在供货商编号,若否则不能更新*/
DECLARE @ExistID bit
EXEC ExistByID 'Supplier', 'SupplierID', @SupplierID, @ExistID OUTPUT
IF @ExistID = 0 --供货商编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否与其他记录的供货商名称相同,若是则不能更新
DECLARE @ExistName bit
EXEC ExistNameWithoutID 'Supplier', 'SupplierID', @SupplierID, 'SupplierName', @SupplierName, @ExistName OUTPUT
IF @ExistName = 1 --与其他记录的供货商名称相同
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*更新记录*/
UPDATE Supplier SET SupplierName = @SupplierName, Contact = @Contact, Introduce = @Introduce, Remark = @Remark WHERE SupplierID = @SupplierID
--记录当前的错误号
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 OFF
GO
SET ANSI_NULLS ON
GO
/*添加用户信息,输出用户编号和操作结果*/
CREATE PROC dbo.UserAddNew
(
@UserName varchar(100), --用户名
@Password varchar(100), --密码
@TrueName varchar(10), --真实姓名
@LastLoginTime datetime, --上一次登录时间
@UserType int, --用户类型
@ID int OUTPUT, --用户编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否存在当前用户名称,若是则不能添加
DECLARE @ExistName bit
EXEC ExistByName 'UserInfo', 'UserName', @UserName, @ExistName OUTPUT
IF @ExistName = 1 --当前用户名称已存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*添加记录*/
INSERT INTO UserInfo Values(@UserName, @Password, @TrueName, @LastLoginTime, @UserType)
--记录当前的错误号
SELECT @ErrNo = @@ERROR
/*输出参数*/
IF @ErrNo = 0 --没有发生错误
BEGIN
SELECT @ID = (SELECT MAX(UserID) FROM UserInfo)
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.UserDelete
(
@UserID int, --用户编号
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在当前用户编号,若否则不能删除*/
DECLARE @ExistID bit
EXEC ExistByID 'UserInfo', 'UserID', @UserID, @ExistID OUTPUT
IF @ExistID = 0 --当前用户编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
/*
手动维护数据完整性的代码。如果没有创建外键约束,请取消这段代码的注释
验证进货信息是否引用了当前用户编号,若是则不能删除
EXEC ExistByID 'Buy', 'RegistrarID', @UserID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
验证销售信息是否引用了当前用户编号,若是则不能删除
EXEC ExistByID 'Sale', 'RegistrarID', @UserID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
验证报损信息是否引用了当前用户编号,若是则不能删除
EXEC ExistByID 'Spoilage', 'RegistrarID', @UserID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
*/
/*删除记录*/
DELETE FROM UserInfo WHERE UserID = @UserID
--记录当前的错误号
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.UserUpdate
(
@UserID int, --用户编号
@UserName varchar(100), --用户名
@Password varchar(100), --密码
@TrueName varchar(10), --真实姓名
@LastLoginTime datetime, --上一次登录时间
@UserType int, --用户类型
@ReturnValue int OUTPUT --执行结果(VB组件的自定义枚举值)
)
AS
DECLARE @ErrNo int --保存错误号
BEGIN TRANSACTION --开始事务
/*验证是否存在当前用户编号,若否则不能更新*/
DECLARE @ExistID bit
EXEC ExistByID 'UserInfo', 'UserID', @UserID, @ExistID OUTPUT
IF @ExistID = 0 --当前用户编号不存在
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 2 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
/*
手动维护数据唯一性的代码。如果没有创建唯一约束,请取消这段代码的注释
验证是否与其他记录的用户名相同,若是则不能更新
DECLARE @ExistName bit
EXEC ExistNameWithoutID 'UserInfo', 'UserID', @UserID, 'UserName', @UserName, @ExistName OUTPUT
IF @ExistName = 1 --与其他记录的用户名相同
BEGIN
ROLLBACK TRANSACTION --回滚事务
SELECT @ReturnValue = 3 --返回VB组件的自定义枚举值
RETURN --结束存储过程
END
*/
/*更新记录*/
UPDATE UserInfo SET UserName = @UserName, Password = @Password, TrueName = @TrueName, LastLoginTime = @LastLoginTime, UserType = @UserType WHERE UserID = @UserID
--记录当前的错误号
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -