zoukankan      html  css  js  c++  java
  • sql 出库存储过程

    CREATE PROCEDURE AddCheckOut (
    _proId INT,
    -- 商品主键
    _oprerator VARCHAR (50),
    -- 操作人
    _checkOutNum INT,
    -- 出库数量
    OUT result INT -- 返回的存储过程是否执行成功的标志位
    )
    BEGIN
    -- 接收错误信息的标识变量
    DECLARE err_flag INT DEFAULT 0;

    DECLARE snum INT DEFAULT 0;

    -- 处理可能会发生的错误
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err_flag = 1;

    -- 开启事务
    START TRANSACTION;

    -- 拿到库存的值
    SET snum = (SELECT StoreNumber FROM tb_product WHERE PId = _proId);

    -- 如果库存量小于了出库量
    IF snum < _checkOutNum THEN
    SET result = 2;-- 说明库存不足
    ROLLBACK;-- 回滚
    ELSE
    -- 更新库存量
    UPDATE tb_product SET StoreNumber = StoreNumber - _checkOutNum WHERE PId = _proId;
    -- 生成出库单
    INSERT INTO TB_CheckOutBill (ProId,Oprerator,CheckOutNum) VALUES(_proId,_oprerator,_checkOutNum);
    -- 判断是否发生了错误
    IF err_flag = 1 THEN
    SET result = 0; -- 说明执行失败
    ROLLBACK; -- 回滚
    ELSE
    SET result = 1; -- 说明执行成功
    COMMIT; -- 提交
    END IF;
    END IF;
    END;
    -- 出库存储过程的调用测试
    CALL AddCheckOut (4, '张三', 120 ,@num);

    SELECT @num;

  • 相关阅读:
    Zepto源码分析-event模块
    Zepto源码分析-callbacks模块
    Zepto源码分析-zepto模块
    Zepto源码分析-架构
    HTML5标签
    前端微信分享
    .net core 2.x
    .net core 2.x
    .net core 2.x
    .net core 2.x
  • 原文地址:https://www.cnblogs.com/swjlove/p/13565833.html
Copyright © 2011-2022 走看看