zoukankan      html  css  js  c++  java
  • 出库存储过程和分页存储过程

     1 CREATE PROCEDURE AddCheckOut (
     2     _proId INT,
     3     -- 商品主键
     4     _oprerator VARCHAR (50),
     5     -- 操作人
     6     _checkOutNum INT,
     7     -- 出库数量
     8     OUT result INT --  返回的存储过程是否执行成功的标志位
     9 )
    10 BEGIN
    11     -- 接收错误信息的标识变量
    12     DECLARE    err_flag INT DEFAULT 0;
    13 
    14     DECLARE snum INT DEFAULT 0;
    15 
    16     -- 处理可能会发生的错误
    17     DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err_flag = 1;
    18 
    19     -- 开启事务
    20     START TRANSACTION;
    21 
    22     -- 拿到库存的值
    23     SET snum = (SELECT StoreNumber FROM tb_product WHERE PId = _proId);
    24 
    25     -- 如果库存量小于了出库量
    26     IF snum < _checkOutNum THEN
    27         SET result = 2;-- 说明库存不足
    28         ROLLBACK;-- 回滚
    29     ELSE
    30         -- 更新库存量
    31         UPDATE tb_product SET StoreNumber = StoreNumber - _checkOutNum WHERE PId = _proId;
    32         -- 生成出库单
    33         INSERT INTO TB_CheckOutBill (ProId,Oprerator,CheckOutNum) VALUES(_proId,_oprerator,_checkOutNum);
    34         -- 判断是否发生了错误
    35         IF err_flag = 1 THEN
    36             SET result = 0;    -- 说明执行失败
    37             ROLLBACK;    -- 回滚
    38         ELSE
    39             SET result = 1;    -- 说明执行成功
    40             COMMIT;    -- 提交
    41         END IF;
    42     END IF;
    43 END;
    44 -- 出库存储过程的调用测试
    45 CALL AddCheckOut (4, '张三', 120 ,@num);
    46 
    47 SELECT @num;
    48 
    49 -- 分页存储过程
    50 CREATE PROCEDURE ProductPage (
    51     _sqlWhere VARCHAR (4000),
    52     _pageIndex INT,
    53     _pageSize INT,
    54     OUT rowCount INT
    55 )
    56 BEGIN
    57     DECLARE startRow INT DEFAULT 0;    -- 定义一个接收计算要跳过的数据量的变量
    58     SET startRow = (_pageIndex - 1) * _pageSize;
    59 
    60     -- 分页的sql语句
    61     SET @sqlStr = CONCAT("SELECT SQL_CALC_FOUND_ROWS * from tb_product p join tb_store s on p.StoreId=s.SId ",_sqlWhere," LIMIT ",startRow,",",_pageSize);
    62 
    63     PREPARE sqlQUery FROM @sqlStr;
    64 
    65     EXECUTE sqlQUery;
    66 
    67     DEALLOCATE PREPARE sqlQUery;-- 销毁预处理变量  清理内存
    68     -- 取得总数据量
    69     SET rowCount = FOUND_ROWS();
    70 END;
    71 
    72 -- 分页存储过程的调用测试
    73 CALL ProductPage ('', 1, 2 ,@num);
    74 
    75 SELECT @num;
  • 相关阅读:
    cocos2dx动画常见特效(转)
    cocos2dx常见Action(转)
    cocos2dx常见场景切换动画(转)
    android AlertDialog.Builder(Context context)换行
    使用NPOI操作Excel文件及其日期处理
    java jar文件打包成exe(Launch4j使用说明)
    知识日志2
    知识日记1
    框架体系对小软件作坊的 重要性 第二章
    框架体系对小软件作坊的 重要性 第一章
  • 原文地址:https://www.cnblogs.com/Hardshells/p/13426352.html
Copyright © 2011-2022 走看看