热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于ssm的进销存业务实现数据库

一、其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储

一、其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010,也就是说这个3代表的是默认的一个长度,当你不足3位时,会帮你补全,当你超过3位时,就没有任何的影响。 除了在存储的时候稍微有点区别外,在我们使用的时候是没有任何区别的。int(10)也可以代表        

2147483647这个    值int(11)也可以代表。要查看出不同效果记得在创建类型的时候加 zerofill这个值

表示用0填充,否则看不出效果的。我     们通常在创建数据库的时候都不会加入这个选项,所以可以 

说他们之间是没有区别的。

DELIMITER $$

USE `mypos2`$$

DROP PROCEDURE IF EXISTS `thjlcp_new`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `thjlcp_new`(syid INT)
BEGIN
IF syid>0 THEN
DELETE FROM syjlb WHERE syjlb.syid=syid;
ELSE
/*增加一条负销售*/
INSERT syjlb(syyid,gkid,sysj,zffs,ysje,ssje,yhje,xszt,zzid)
SELECT syyid,gkid,NOW(),zffs,-ysje,-ssje,-yhje,-1,zzid
FROM 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;

/*变更库存*/
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 symxb WHERE symxb.syid=-syid GROUP BY hpid;
UPDATE hpkcb b1,lsb b2 SET b1.kcsl=b1.kcsl+b2.xssl WHERE b1.hpid=b2.hpid;

/*如果是会员,还原积分*/
SELECT gkid INTO @hyid FROM syjlb WHERE syjlb.syid=-syid;
SELECT ssje INTO @ssje FROM syjlb WHERE syjlb.syid=-syid;
IF @hyid>10000 THEN
UPDATE hyxxb SET knye=knye+@ssje,kyjf=kyjf-FLOOR(@ssje) WHERE hyxxb.hyid=@hyid;
END IF;
END IF;

END$$

DELIMITER ;

退货业务实现

CREATE DEFINER=`root`@`localhost` PROCEDURE `xsjlcp_new`(syyid int,hyid int,ysje DECIMAL(18,2),ssje DECIMAL(18,2),zffs TINYINT,xsmx VARCHAR(1000))
BEGIN
-- 与销售有关业务的维护

-- 1.Syjlb(收银记录表) insert syyid(售货员id) gkid(顾客id) ysje(应收金额) ssje(实收金额) zffs(支付方式)需要从用户界面传过来syyid gkid ysje ssje zffs
INSERT INTO syjlb(syyid,gkid,ysje,ssje,zffs) values(syyid,hyid,ysje,ssje,zffs);
SET @syid=@@identity;
DROP TABLE IF EXISTS lsb;
CREATE TEMPORARY TABLE lsb(hpid INT,xssl DECIMAL(18,3));
WHILE (xsmx<>'') DO
SET @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;

-- 2.Symxb(收银明细表) insert syid(售货id) hpid(货品id) xssl(销售数量) dj(定价) lsj(零售价) 需要从用户界面传过来:hpid xssl
insert into symxb(syid,hpid,xssl,dj,lsj)
SELECT @syid,lsb.hpid,xssl,lsj,cxj from lsb,hpmcb where lsb.hpid=hpmcb.Hpid;

-- 3.hpkcb(货品库存表) update 依据hpid(货品id),xssl(销售数量)更新kcsl 需要从用户界面传过来:hpid xssl
DROP TABLE IF EXISTS lsb1;
CREATE TEMPORARY TABLE lsb1(hpid INT,xssl DECIMAL(18,3));
INSERT INTO lsb1 SELECT hpid,SUM(xssl) FROM lsb GROUP BY hpid;
UPDATE hpkcb b1,lsb1 b2 SET b1.kcsl=b1.kcsl-b2.xssl WHERE b1.hpid=b2.hpid;

-- 4.hyxxb(会员信息表) update 依据hyid(货品id),ssje(实收金额)更新knye(卡内余额),kyjf (可用积分)需要从用户界面传过来:hpid ssje
IF hyid>10000 THEN
UPDATE hyxxb SET knye=knye-ssje,kyjf=kyjf+FLOOR(ssje),scxfsj=NOW() WHERE `hyxxb`.`hyid`=hyid;
END IF;
END



推荐阅读
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
author-avatar
Pingac
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有