存储过程

目录


存储过程

hpmcbcp

Thjlcp

thjlcp_new

xsjlcp

zzjlcp

查询销售记录及销售明细

货品信息查询

货品信息维护

事后退货业务

销售业务实现

PysxCx()函数

触发器

delete_from_hpkcb_after_delete_hpmcb

insert_into_hpkcb_after_insert_hpmcb

update_hpkcb_hyxxb_delete_symxb_before_delete

update_mcsx_before_insert_hpmcb

update_mcsx_before_update_hpmcb


hpmcbcp

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `hpmcbcp`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `hpmcbcp`(hpid INT,hpmc VARCHAR(50),jldw VARCHAR(10),hptm VARCHAR(20),lsj DECIMAL(9,2),cxj DECIMAL(9,2))
BEGIN/*增加货品*/IF hpid=0 THENINSERT INTO hpmcb(hpmc,jldw,hptm,lsj,cxj,mcsx)VALUES(hpmc,jldw,hpzt,lsj,cxj,pysxcx(hpmc));SET @hpid=@@identity;INSERT INTO hpkcb(hpid)VALUES(@hpid);/*修改货品*/ELSEIF hpid>0 THENUPDATE hpmcb SET hpmcb.`hpmc`=hpmc,hpmcb.`jldw`=jldw,hpmcb.`hptm`=hptm,hpmcb.`lsj`=lsj,hpmcb.`cxj`=cxj,hpmcb.`mcsx`=pysxcx(hpmc)WHERE hpmcb.`hpid`=hpid;ELSEDELETE FROM hpmcb WHERE hpmcb.`hpid`=-hpid;DELETE FROM hpkcb WHERE hpkcb.`hpid`=-hpid;END IF;END$$DELIMITER ;

Thjlcp

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `Thjlcp`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `Thjlcp`(syid INT)
BEGINSELECT gkid INTO @hyid FROM syjlb WHERE syjlb.syid=syid;SELECT ssje INTO @ssje FROM syjlb WHERE syjlb.`syid`=syid;/*变更余额和积分*/IF @hyid>10000 THENUPDATE hyxxb SET knye=knye+ssje,kyjf=kyjf-FLOOR(@ssje) WHERE hyxxb.`hyid`=@hyid;END IF;/*还原库存*/DROP TABLE IF EXISTS lsb;CREATE TEMPORARY TABLE lsb(hpid INT ,xssl NUMERIC(18,3));INSERT INTO lsb(hpid,xssl) SELECT hpid,SUM(xssl) FROM syjlb WHERE syjlb.`syid`=syid GROUP BY hpid;UPDATE hpkcb b1,lsb b2 SET b1.kcsl=kcsl+b2.xssl WHERE b1.hpid=b2.hpid;DELETE FROM symxb WHERE symxb.`syid`=syid;DELETE FROM syjlb WHERE syjlb.`syid`;END$$DELIMITER ;

thjlcp_new

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `thjlcp_new`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `thjlcp_new`(syid INT)
BEGINDELETE FROM syjlb WHERE syjlb.syid=syid;END$$DELIMITER ;

xsjlcp

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `xsjlcp`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `xsjlcp`(xsmx VARCHAR(1000))
BEGINDROP TABLE IF EXISTS lsb;CREATE TEMPORARY TABLE lsb(hpid INT ,xssl NUMERIC(18,3));WHILE(xsmx>'') DOSET @k=POSITION(','IN xsmx);SET @hpid=LEFT(xsmx,@k-1);SET xsmx=SUBSTR(xsmx,@k+1);SET @k=POSITION(','IN xsmx);SET @xssl=LEFT(xsmx,@k-1);INSERT INTO lsb VALUES(@hpid,@xssl);END WHILE;SELECT * FROM lsb;SELECT hptm,hpmc,jldw,dj,cxj,xssl,xssl*cxj AS 金额 FROM hpmcb,lsb WHERE hpmcb.`hpid`=lsb.hpid;END$$DELIMITER ;

zzjlcp

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `zzjlcp`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `zzjlcp`(syyid INT,ssje DECIMAL(18,2))
BEGIN/*计算应收金额*/SELECT SUM(syjlb.`ssje`) INTO @yjje FROM syjlb WHERE syjlb.`syyid`=syyid AND zffs = 0 AND zzid IS NULL;-- 插入扎帐记录表 IF ABS(@yjje-ssje)<0.01 THENINSERT INTO zzjlb(syyid,ysje,ssje,ccyy) VALUE(syyid,@yjje,ssje,'无差错');ELSE INSERT INTO zzjlb(syyid,ysje,ssje,ccyy) VALUE(syyid,@yjje,ssje);END IF;SET @zzid =@@identity;-- 更新收银记录表中的zzid;UPDATE syjlb SET zzid =@zzid WHERE syjlb.`syyid`AND zzid IS NULL;END$$DELIMITER ;

查询销售记录及销售明细

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `查询销售记录及销售明细`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `查询销售记录及销售明细`(cxlb INT,cxcs INT)
BEGINIF cxlb=0 THENSELECT syid,syyid,sysj,gkid,ysje,ssje,CASE zffsWHEN 0 THEN'现金'WHEN 1 THEN '储值卡'WHEN 2 THEN '支付宝'WHEN 3 THEN '微信支付'END AS 支付FROM syjlb WHERE syyid=cxcs AND sysj<CURDATE() ORDER BY syid DESC;ELSESELECT * FROM symxb WHERE syid=cxcs;END IF;END$$DELIMITER ;

货品信息查询

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `货品信息查询`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `货品信息查询`(hpid INT)
BEGIN/* 查询全部货品*/IF hpid=0 THENSELECT * FROM hpmcb;ELSESELECT * FROM hpmcb WHERE hpmcb.`hpid`=hpid;END IF;END$$DELIMITER ;

货品信息维护

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `货品信息维护`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `货品信息维护`(hpid INT,hpmc VARCHAR(50),jldw VARCHAR(10),hptm VARCHAR(10),lsj DECIMAL(9,2),cxj DECIMAL(9,2))
BEGINIF hpid=0 THENINSERT INTO hpmcb(hpmc,jldw,hptm,lsj,cxj) VALUES(hpmc,jldw,hptm,lsj,cxj);ELSEIF hpid>0 THENUPDATE hpmcb SET hpmcb.`hpmc`=hpmc,hpmcb.`jldw`=jldw,hpmcb.`hptm`=hptm,hpmcb.`lsj`=lsj,hpmcb.`cxj`=cxj WHERE hpmcb.`hpid`=hpid;ELSEDELETE FROM hpmcb WHERE hpmcb.hpid=-hpid;END IF;END$$DELIMITER ;

事后退货业务

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `事后退货业务`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `事后退货业务`(syid INT)
BEGINIF syid>0 THEN /*当天退货*/DELETE FROM syjlb WHERE syjlb.`syid`=syid;ELSE  /*事后退货*//*增加一条负销售*/INSERT INTO syjlb(syyid,gkid,sysj,zffs,ysje,ssje,xszt,zzid) SELECT syyid,gkid,NOW(),zffs,-ysje,-ssje,-1,zzidFROM syjlb WHERE syjlb.`syid`=-syid;SET @syid_new=@@identity;/*修改销售状态,以避免多次退货*/UPDATE syjlb SET xszt=@syid_new WHERE syjlb.`syid`=-syid;/*在销售明细表中插入负销售*/INSERT INTO symxb(syid,hpid,xssl,dj,lsj) SELECT @syid_new,hpid,-xssl,dj,lsj FROM symxb WHERE symxb.syid=-syid;/*变更库存*/SELECT gkid INTO @hyid FROM syjlb WHERE syjlb.`syid`=-syid;SELECT ssje INTO @ssje FROM syjlb WHERE syjlb.`syid`=-syid;/*变更余额和积分*/IF @hyid>10000 THENUPDATE hyxxb SET knye=knye+ssje,kyjf=kyjf-FLOOR(@ssje) WHERE hyxxb.`hyid`=@hyid;END IF;/*还原库存*/DROP TABLE IF EXISTS lsb;CREATE TEMPORARY TABLE lsb(hpid INT ,xssl NUMERIC(18,3));INSERT INTO lsb(hpid,xssl) SELECT hpid,SUM(xssl) AS xssl FROM syjlb WHERE syjlb.`syid`=syid GROUP BY hpid;UPDATE hpkcb b1,lsb b2 SET b1.kcsl=kcsl+b2.xssl WHERE b1.hpid=b2.hpid;DELETE FROM symxb WHERE symxb.`syid`=syid;DELETE FROM syjlb WHERE syjlb.`syid`;END IF; END$$DELIMITER ;

销售业务实现

DELIMITER $$USE `jxc`$$DROP PROCEDURE IF EXISTS `销售业务实现`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `销售业务实现`(syyid INT,gkid INT,ysje DECIMAL(18,2),ssje DECIMAL(18,2),zffs TINYINT,xsmx VARCHAR(1000))
BEGININSERT INTO syjlb(syyid,gkid,ysje,ssje,zzfs) VALUES(syyid,gkid,ysje,ssje,zffs);SET @syid=@@identity;DROP TABLE IF EXISTS lsb;CREATE TEMPORARY TABLE lsb(hpid INT ,xssl NUMERIC(18,3));WHILE(xsmx>'') DOSET @k=POSITION(','IN xsmx);SET @hpid=LEFT(xsmx,@k-1);SET xsmx=SUBSTR(xsmx,@k+1);SET @k=POSITION(','IN xsmx);SET @xssl=LEFT(xsmx,@k-1);INSERT INTO lsb VALUES(@hpid,@xssl);SET xsmx=SUBSTR(xsmx,@k+1);END WHILE;INSERT INTO symxb(syid,hpid,xssl,dj,lsj)SELECT @syid,hpid,xssl,dj,cxj FROM lsb,symxb WHERE lsb.hpid=symxb.`hpid`;DROP TABLE IF EXISTS lsb1;CREATE TEMPORARY TABLE lsb1(hpid INT,xssl NUMERIC(18,3));INSERT INTO lsb1 SELECT hpid,SUM(xssl) FROM lsb GROUP BY hpid;UPDATE hpkcb b1,lsb b2 SET b1.kcsl=b1.kcsl-b2.xssl WHERE b1.hpid=b2.hpid;IF gkid>10000 THENUPDATE hyxxb SET knye=knye-ssje,kyjf=kyjf-FLOOR(ssje) WHERE hyxxb.`hyid`=gkid;END IF;END$$DELIMITER ;

PysxCx()函数

-- PysxCx()函数
DELIMITER $$USE `jxc`$$DROP FUNCTION IF EXISTS `PysxCx`$$CREATE DEFINER=`root`@`localhost` FUNCTION `PysxCx`(zw VARCHAR(50)) RETURNS VARCHAR(10) CHARSET utf8mb4READS SQL DATA
BEGINSET @pysx='';SET @l=CHAR_LENGTH(zw);SET @i=1;WHILE(@i<=l) DOSELECT jp INTO @jp FROM hzpyb WHERE hz=SUBSTR(zw,@i,1);SET @pysx=CONCAT(@pysx,@jp);SET @i=@i+1;END WHILE;RETURN @pysx;END$$DELIMITER ;

触发器

delete_from_hpkcb_after_delete_hpmcb

DELIMITER $$USE `jxc`$$DROP TRIGGER /*!50032 IF EXISTS */ `delete_from_hpkcb_after_delete_hpmcb`$$CREATE/*!50017 DEFINER = 'root'@'localhost' */TRIGGER `delete_from_hpkcb_after_delete_hpmcb` AFTER DELETE ON `hpmcb` FOR EACH ROW BEGINDELETE FROM hpkcb WHERE hpid=old.hpid;END;
$$DELIMITER ;

insert_into_hpkcb_after_insert_hpmcb

DELIMITER $$USE `jxc`$$DROP TRIGGER /*!50032 IF EXISTS */ `insert_into_hpkcb_after_insert_hpmcb`$$CREATE/*!50017 DEFINER = 'root'@'localhost' */TRIGGER `insert_into_hpkcb_after_insert_hpmcb` AFTER INSERT ON `hpmcb` FOR EACH ROW BEGININSERT INTO hpkcb(hpid)VALUES(new.hpid);END;
$$DELIMITER ;

update_hpkcb_hyxxb_delete_symxb_before_delete

DELIMITER $$USE `jxc`$$DROP TRIGGER /*!50032 IF EXISTS */ `update_hpkcb_hyxxb_delete_symxb_before_delete_syjlb`$$CREATE/*!50017 DEFINER = 'root'@'localhost' */TRIGGER `update_hpkcb_hyxxb_delete_symxb_before_delete_syjlb` BEFORE DELETE ON `syjlb` FOR EACH ROW BEGINIF old.gkid>10000 THENUPDATE hyxxb SET knye=knye+old.ssje,kyjf=kyjf-FLOOR(old.ssje) WHERE hyxxb.`hyid`=old.gkid;END IF;UPDATE hpkcb b1 ,(SELECT hpid,SUM(xssl) AS xssl FROM symxb WHERE symxb.`syid`=old.syid GROUP BY hpid) b2 SET b1.kcsl=b1.kcsl+b2.xssl WHERE b1.hpid=b2.hpid;DELETE FROM symxb WHERE symxb.syid=syid;END;
$$DELIMITER ;

update_mcsx_before_insert_hpmcb

DELIMITER $$USE `jxc`$$DROP TRIGGER /*!50032 IF EXISTS */ `update_mcsx_before_insert_hpmcb`$$CREATE/*!50017 DEFINER = 'root'@'localhost' */TRIGGER `update_mcsx_before_insert_hpmcb` BEFORE INSERT ON `hpmcb` FOR EACH ROW BEGINSET new.mcsx=pysxcx(new.hpmc);END;
$$DELIMITER ;

update_mcsx_before_update_hpmcb

DELIMITER $$USE `jxc`$$DROP TRIGGER /*!50032 IF EXISTS */ `update_mcsx_before_update_hpmcb`$$CREATE/*!50017 DEFINER = 'root'@'localhost' */TRIGGER `update_mcsx_before_update_hpmcb` BEFORE UPDATE ON `hpmcb` FOR EACH ROW BEGINIF new.hpmc<>old.hpmc THENSET new.mcsx=pysxcx(new.hpmc);END IF;END;
$$DELIMITER ;

操作题数据库部分代码相关推荐

  1. C语言mysql_ping实例代码_c语言操作mysql数据库(示例代码)

    c语言操作Mysql数据库,主要就是为了实现对数据库的增.删.改.查等操作,操作之前,得先连接数据库啊,而连接数据库主要有两种方法.一.使用mysql本身提供的API,在mysql的安装目录中可可以看 ...

  2. mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)

    数据库及其编程API来源于不同的背景,开发人员可以从众多的数据库中选择一种,每种数据库都有自己的一套编程API,这就为数据库编程造成了很大的局限性.SQL是标准化数据库编程接口的一种尝试,然而各种数据 ...

  3. php操作access数据库类代码

    class.php文件: [php] <?php class Access//Access数据库操作类 { var $databasepath,$constr,$dbusername,$dbpa ...

  4. 100天精通Python(进阶篇)——第40天:pymongo操作MongoDB数据库基础+代码实战

    文章目录 一.安装pymongo库 二.数据库操作 1.连接数据库 2.数据库操作 3.集合操作 4.插入文档 插入一个文档 插入多个文档 插入指定 _id 的多个文档 5.查看文档 查询一条数据 查 ...

  5. c++ mysql ctime_C++操作mysql数据库范例代码

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #include #include void TestMySQL() { TRACE(&q ...

  6. 计算机java三级,Java三级复-操作题(计算机程序员).ppt

    Java三级复-操作题(计算机程序员) 操作题1.2.3: 素材 2.任务说明 (1)项目名称:银行取款项目 (2)数据库表说明: 用户信息表的PRAIMARYKEY :用户编号 用户帐户表的PRAI ...

  7. VB操作Access数据库小记

    因工作需要,同时为了避免大量繁琐工作,特研究了一下VB操作Access数据库,代码编写好后一劳永逸,极大提高了效率.本人是VB小白,在网上查阅了一些资料后动手操作,记录以备查阅. 工作环境:Windo ...

  8. imooc的疯狂的蚂蚁的课程《Python操作MySQL数据库》 python3+pymysql模块来操作mysql数据库

    以下代码为imooc的疯狂的蚂蚁的课程<Python操作MySQL数据库>的python3版本的代码,使用的是pymysql模块来操作mysql数据库,代码与原课程有所改动,注意运行时需要 ...

  9. php django mysql配置文件_Mysql学习Django+mysql配置与简单操作数据库实例代码

    <Mysql学习Django+mysql配置与简单操作数据库实例代码>要点: 本文介绍了Mysql学习Django+mysql配置与简单操作数据库实例代码,希望对您有用.如果有疑问,可以联 ...

最新文章

  1. 好玩的东西,测试一下
  2. Leetcode 94. 二叉树的中序遍历 解题思路及C++实现
  3. Log4j 日志详细用法
  4. Two Paths CodeForces - 14D(暴力+树的直径)
  5. Win7旗舰版打不开任务管理器怎么办
  6. Apple Watch要用上microLED显示屏了 最早明年...
  7. Could not connect to Redis at 127.0.0.1:13141: Cannot assign requested address
  8. cpu频率_CPU频率被锁定到800mhz怎么办?
  9. linux删除第二列为空_Linux系列第二谈(开机关机、Linux中的文件、目录管理、基本属性)...
  10. opengl 加载贴图Unknown DIB file format问题
  11. fpga与海思BT1120调试问题记录
  12. Oracle JDK 最新和旧版本下载地址
  13. 微信小黄鸡php,微信表情包小黄鸡含义
  14. 怎么调用html调色板,JS实现的系统调色板完整实例
  15. 在python中for a in a是什么意思_Python:A [1:]中x的含義是什么?
  16. Java设计模式之外观模式(门面模式,迪米特法则的具体实现,抽象外观类改进)
  17. IE浏览器浏览网页提示证书错误,Chrome、360浏览器显示“不安全”的原因
  18. BS工作原理—BS总结
  19. 使用高德地图服务获取全部行政区划与各个省市的地理坐标
  20. 群晖php7.0,群晖新版操作系统DSM 7.0下载

热门文章

  1. python快速入门while循环
  2. SPOJ1812 LCS2 - Longest Common Substring II(SAM)
  3. Git用户名/密码/邮箱,及设置git配置
  4. you-get 下载暂停
  5. LosslessCut for Mac(无损视频剪切工具)
  6. 使用poi解析excel 返回对象
  7. AI也有健忘症?英国41岁教授专访:解决灾难性遗忘
  8. mysql查询主键sql语句_MySQL数据库-表操作-SQL语句(一)
  9. 西安电子科技大学物光院851考研学长经验分享
  10. 仿华为系统自带天气预报UI---线条圆圈控件