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

📄 2.sql

📁 网上购物管理系统做的很一般 见谅
💻 SQL
📖 第 1 页 / 共 4 页
字号:
      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.IsValidUser
(
    @UserName      varchar(100),          --用户名
    @Password      varchar(100),          --密码
    @UserID        int          OUTPUT,   --用户编号
    @TrueName      varchar(10)  OUTPUT,   --真实姓名
    @UserType      bit          OUTPUT,   --用户类型
    @ReturnValue   int          OUTPUT    --输出值(VB组件的自定义枚举值),1为合法用户, 2为用户名错,3为密码错
)
AS
    /*验证是否在数据库中有匹配的用户名*/
    DECLARE @RightPwd varchar(100)
    SELECT TOP 1 @RightPwd = Password, @UserID = UserID, @TrueName = TrueName, @UserType = UserType FROM UserInfo WHERE UserName = @UserName ORDER BY UserName

    /*用户名不存在*/
    IF @RightPwd IS NULL
       BEGIN
         SET @ReturnValue = 2             --返回用户名错
         RETURN
       END

    /*用户名存在则比较密码(区分大小写)*/
    IF @RightPwd <> @Password
       BEGIN
         SET @ReturnValue = 3             --返回密码错
         RETURN
       END
    
    /*用户名和密码都存在则记录登录时间*/
    UPDATE UserInfo SET LastLoginTime=GetDate() WHERE UserName = @UserName

    SET @ReturnValue = 1
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO


/*添加一条销售信息,输出销售编号和操作结果*/
CREATE PROC dbo.SaleAddNew
(
    @GoodsID      int,              --商品编号
    @Amount       decimal(18, 2),   --进货数量
    @UnitPrice    smallmoney,       --单价
    @RegistrarID  int,              --登记员编号
    @Remark       varchar(1000),    --备注
    @ID           int OUTPUT,       --进货编号
    @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
      */

      /*添加记录*/
      INSERT INTO Sale Values(@GoodsID, @Amount, @UnitPrice, @RegistrarID, GetDate(), @Remark)

      --记录当前的错误号
      SELECT @ErrNo = @@ERROR

      /*输出参数*/
      IF @ErrNo = 0                 --没有发生错误
         BEGIN
           SELECT @ID = (SELECT MAX(SaleID) FROM Sale)
           SELECT @ReturnValue = 0
         END
      ELSE IF @ErrNo = 547          --发生外键冲突
         BEGIN
           ROLLBACK TRANSACTION     --遇到错误则回滚事务         
           SELECT @ReturnValue = 2
           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.SaleDelete
(
    @SaleID        int,             --销售编号
    @ReturnValue   int OUTPUT       --执行结果(VB组件的自定义枚举值)
)
AS
    BEGIN TRANSACTION               --开始事务

      /*验证是否存在销售编号,若否则不能删除*/
      DECLARE @ExistID bit
      EXEC ExistByID 'Sale', 'SaleID', @SaleID, @ExistID OUTPUT
      IF @ExistID = 0               --销售编号不存在
         BEGIN
           ROLLBACK TRANSACTION     --回滚事务
           SELECT @ReturnValue = 2  --返回VB组件的自定义枚举值
           RETURN                   --结束存储过程
         END

      /*删除记录*/
      DELETE FROM Sale WHERE SaleID = @SaleID
      
      /*输出参数*/
      IF @@ERROR = 0 
         SELECT @ReturnValue = 0
      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.SaleUpdate
(
    @SaleID       int,              --销售编号
    @GoodsID      int,              --商品编号
    @Amount       decimal(18, 2),   --进货数量
    @UnitPrice    smallmoney,       --单价
    @RegistrarID  int,              --登记员编号
    @Remark       varchar(1000),    --备注
    @ReturnValue  int OUTPUT        --执行结果(VB组件的自定义枚举值)
)
AS
    BEGIN TRANSACTION               --开始事务

      /*验证是否存在销售编号,若否则不能更新*/
      DECLARE @ExistID bit
      EXEC ExistByID 'Sale', 'SaleID', @SaleID, @ExistID OUTPUT
      IF @ExistID = 0               --销售编号不存在
         BEGIN
           ROLLBACK TRANSACTION     --回滚事务
           SELECT @ReturnValue = 2  --返回VB组件的自定义枚举值
           RETURN                   --结束存储过程
         END

      /*更新记录*/
      UPDATE Sale SET GoodsID = @GoodsID, Amount = @Amount, UnitPrice = @UnitPrice, RegistrarID = @RegistrarID, RegDate = GetDate(), Remark = @Remark WHERE SaleID = @SaleID

      /*输出参数*/
      IF @@ERROR = 0
         SELECT @ReturnValue = 0
      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.SpoilageAddNew
(
    @BuyID        int,              --进货编号
    @Amount       decimal(18, 2),   --报损数量
    @Reportor     varchar(10),      --报损员
    @Reason       varchar(1000),    --报损原因
    @RegistrarID  int,              --登记员编号
    @ID           int OUTPUT,       --报损编号
    @ReturnValue  int OUTPUT        --执行结果(VB组件的自定义枚举值)
)
AS
    DECLARE @ErrNo int              --保存错误号
    BEGIN TRANSACTION               --开始事务

      /*
      手动维护数据完整性的代码。如果没有创建外键约束,请取消这段代码的注释
      验证是否存在进货编号,若否则不能添加
      DECLARE @ExistID bit
      EXEC ExistByID 'Buy', 'BuyID', @BuyID, @ExistID OUTPUT
      IF @ExistID = 0               --进货编号不存在
         BEGIN
           ROLLBACK TRANSACTION     --回滚事务
           SELECT @ReturnValue = 2  --返回VB组件的自定义枚举值
           RETURN                   --结束存储过程
         END
      */

      /*添加记录*/ 
      INSERT INTO Spoilage Values(@BuyID, @Amount, @Reportor, @Reason, @RegistrarID, GetDate())

      --记录当前的错误号
      SELECT @ErrNo = @@ERROR

      /*输出参数*/
      IF @ErrNo = 0                 --没有发生错误
         BEGIN
           SELECT @ID = (SELECT MAX(SpoilageID) FROM Spoilage)
           SELECT @ReturnValue = 0
         END
      ELSE IF @ErrNo = 547          --发生外键冲突
         BEGIN
           ROLLBACK TRANSACTION     --遇到错误则回滚事务         
           SELECT @ReturnValue = 2
           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.SpoilageDelete
(
    @SpoilageID    int,             --报损编号
    @ReturnValue   int OUTPUT       --执行结果(VB组件的自定义枚举值)
)
AS
    BEGIN TRANSACTION               --开始事务

      /*验证是否存在报损编号,若否则不能删除*/
      DECLARE @ExistID bit
      EXEC ExistByID 'Spoilage', 'SpoilageID', @SpoilageID, @ExistID OUTPUT
      IF @ExistID = 0               --报损信息不存在
         BEGIN
           ROLLBACK TRANSACTION     --回滚事务
           SELECT @ReturnValue = 2  --返回VB组件的自定义枚举值
           RETURN                   --结束存储过程
         END

      /*删除记录*/
      DELETE FROM Spoilage WHERE SpoilageID = @SpoilageID

      /*输出参数*/
      IF @@ERROR = 0 
         SELECT @ReturnValue = 0
      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.SpoilageUpdate
(
    @SpoilageID   int,              --报损编号
    @BuyID        int,              --进货编号
    @Amount       decimal(18, 2),   --报损数量
    @Reportor     varchar(10),      --报损人
    @Reason       varchar(1000),    --报损原因
    @RegistrarID  int,              --登记员编号
    @ReturnValue  int OUTPUT        --执行结果(VB组件的自定义枚举值)
)
AS
    DECLARE @ErrNo int              --保存错误号
    BEGIN TRANSACTION               --开始事务

      /*验证是否存在报损编号,若否则不能更新*/
      DECLARE @ExistID bit
      EXEC ExistByID 'Spoilage', 'SpoilageID', @SpoilageID, @ExistID OUTPUT
      IF @ExistID = 0               --报损编号不存在
         BEGIN
           ROLLBACK TRANSACTION     --回滚事务
           SELECT @ReturnValue = 2  --返回VB组件的自定义枚举值
           RETURN                   --结束存储过程
         END

      /*
      手动维护数据完整性的代码。如果没有创建外键约束,请取消这段代码的注释
      验证是否存在进货编号,若否则不能添加
      DECLARE @ExistID bit
      EXEC ExistByID 'Buy', 'BuyID', @BuyID, @ExistID OUTPUT
      IF @ExistID = 0               --进货编号不存在
         BEGIN
           ROLLBACK TRANSACTION     --回滚事务
           SELECT @ReturnValue = 2  --返回VB组件的自定义枚举值
           RETURN                   --结束存储过程
         END
      */

      /*更新记录*/
      UPDATE Spoilage SET BuyID = @BuyID, Amount = @Amount, Reportor = @Reportor, Reason = @Reason, RegistrarID = @RegistrarID, RegDate = GetDate() WHERE SpoilageID = @SpoilageID

      --记录当前的错误号
      SELECT @ErrNo = @@ERROR

      /*输出参数*/
      IF @ErrNo = 0                 --没有发生错误
         SELECT @ReturnValue = 0
      ELSE IF @ErrNo = 547          --发生外键冲突
         BEGIN
           ROLLBACK TRANSACTION     --遇到错误则回滚事务         
           SELECT @ReturnValue = 2
           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.SupplierAddNew
(
    @SupplierName   varchar(100),   --供货商名称
    @Contact        varchar(1000),  --联系方式

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -