⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.sql

📁 网上购物管理系统做的很一般 见谅
💻 SQL
📖 第 1 页 / 共 4 页
字号:
    @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 + -