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

📄 2.sql

📁 网上购物管理系统做的很一般 见谅
💻 SQL
📖 第 1 页 / 共 4 页
字号:

    /*输出参数*/
    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 + -