1. create database chaoshils--创建一个数据库
  2. go
  3. use chaoshils--使用这个数据库
  4. go
  5. create table gongying--创建一个供应商的表格
  6. (
  7. gcode int primary key identity(1001,1),--供应商编号,主键
  8. gname varchar(20),--名称
  9. gsdh varchar(20),--电话
  10. gsdz varchar(20)--地址
  11. )
  12.  
  13. --向供应商表格中添加数据
  14. insert into gongying values('可口可乐公司','','山东青岛')
  15. insert into gongying values('花生油公司','','山东济南')
  16. insert into gongying values('绿茶公司','','山东日照')
  17. insert into gongying values('矿泉水公司','','山东潍坊')
  18. insert into gongying values('红星二锅头公司','','北京')
  19.  
  20. create table chaoshi--创建一个超市的表格
  21. (
  22. ccode int primary key,--产品编号
  23. cname varchar(20),--产品名称
  24. cshu int,--产品数量
  25. cjin decimal(18,2),--进价
  26. cshou decimal(18,2),--售价
  27. cgcode int --供应商编号,供应商表的外键
  28. )
  29.  
  30. --向超市表格中添加数据
  31. insert into chaoshi values(10001,'可口可乐',100,2,3,1001)
  32. insert into chaoshi values(10002,'花生油',50,40,80,1002)
  33. insert into chaoshi values(10003,'绿茶',100,8,20,1003)
  34. insert into chaoshi values(10004,'矿泉水',150,1,2,1004)
  35. insert into chaoshi values(10005,'红星二锅头',120,3,5,1005)
  36.  
  37. --创建一个小票的表格,不能直接插入数据,在下面存储过程中根据商品的销售情况向里面添加数据
  38. create table xiaopiao
  39. (
  40. xcode int,--产品编号,超市表的外键
  41. xname varchar(20),--产品名称
  42. xshu int,--购买的产品数量
  43. xjiage decimal(18,2),--产品单价
  44. zjia decimal(18,2) --产品总价
  45. )
  46.  
  47. select*from gongying
  48. select*from chaoshi
  49.  
  50. create proc liushui --创建一个存储过程用来记录卖出货物的数量价格添加于小票表中
  51. @mai int,--返回一个参数,购买的数量
  52. @hcode int--购买的商品的编号
  53. as
  54. begin
  55. declare--声明一下使用下面定义的变量
  56. @name varchar(20),
  57. @shu int,
  58. @danjia decimal(18,2),
  59. @zong decimal(18,2),
  60. @count int
  61. select @name=cname from chaoshi where ccode=@hcode--通过返回参数的商品编号在超市中查找商品名称赋值于变量@name
  62. select @shu=cshu from chaoshi where ccode=@hcode--通过编号查找此商品现有的而数量赋值于变量@shu
  63. select @danjia=cshou from chaoshi where ccode=@hcode--通过编号查找此产品的价格赋值于变量@danjia
  64. set @zong=@danjia*@mai--货物价格@danjia乘以返回参数中购买的数量@mai等于总价格,用变量@zong接收一下
  65.  
  66. select @count=count(*)from chaoshi where ccode=@hcode--查看一下返回的参数商品编号是否存在,存在值为1,不存在为0,接收于变量@count
  67.  
  68. if @count>0--如果@count不为0,则存在这种商品
  69. begin
  70. if @shu> = @mai--如果超市内商品的数量大于或者等于购买的数量
  71. begin
  72. insert into xiaopiao values(@hcode,@name,@mai,@danjia,@zong)--则向xiaopiao表中添加购买信息
  73. select xcode as 编号,xname as 产品名称,xshu as 购买数量,xjiage as 单价,zjia as 合计 from xiaopiao--把添加到表格中的信息查询一下,列名改为汉字显示
  74. end
  75. else if @shu<@mai--如果超市内的商品数量小于购买的数量
  76. begin
  77. print'货物不足' --则,货物不足
  78. end
  79. end
  80. else if @count=0--如果@count值为0,则没有这件商品
  81. begin
  82. print'没有此商品'
  83. end
  84.  
  85. end
  86. go--选中执行此存储过程,只能执行一次
  87.  
  88. exec liushui 50,10008--此处是执行存储过程liushui并返回两个参数,数量和商品编号,可修改数量以及商品参数选择其他商品
  89. --此处商品编号的参数在表中并有此编号的商品,则执行@count=0这一步,没有此商品,因此小票表中就不会添加数
    --据
  90. select*from xiaopiao--查看小票表中存储的数据

SQL 存储过程 超市小票打印的更多相关文章

  1. 【JS】通过JS实现超市小票打印功能——ActiveX控件

    应客户的需求= = ,要在网页端实现打印小票的功能 先来一张打印出的小票效果图(合计明显不对,因为有修改订单功能,请各位忽略) 用什么方法实现呢: 我想应该是有三种吧 1.用第三方的浏览器控件(这个好 ...

  2. SQL存储过程+游标 循环批量()操作数据

    本人收集的,挺有用的 1. 利用游标循环更新.删除MemberAccount表中的数据 DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT * FROM dbo.M ...

  3. 《软件测试自动化之道》读书笔记 之 SQL 存储过程测试

    <软件测试自动化之道>读书笔记 之 SQL 存储过程测试 2014-09-28 待测程序测试程序   创建测试用例以及测试结果存储  执行T-SQL脚本  使用BCP工具导入测试用例数据  ...

  4. 存储过程——异常捕获&打印异常信息

    目录 0. 背景说明 1. 建立异常信息表ErrorLog 2. 建立保存异常信息的存储过程 3. 建立在SQL Server中打印异常信息的存储过程 4. 建立一个用于测试的存储过程抛出异常进行测试 ...

  5. PL/SQL存储过程编程

    PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编 ...

  6. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...

  7. SQL存储过程的调用及写法

    调用函数: public class SqlProcess { ; public DataSet ReturnSet = null; public SqlDataAdapter adapter = n ...

  8. sql存储过程几个简单例子

    导读:sql存储是数据库操作过程中比较重要的一个环节,对于一些初学者来说也是比较抽象难理解的,本文我将通过几个实例来解析数据库中的sql存储过程,这样就将抽象的事物形象化,比较容易理解. 例1: cr ...

  9. SQL存储过程生成顺序编码

    一.第一种方式 USE [WJKC]GO/****** Object:  StoredProcedure [dbo].[Address_GetCode1]    Script Date: 2016/3 ...

随机推荐

  1. openVPN之Luci及tap模式

    一. 1.复制luci-sc-openvpn源码到/home/tingpan/openwrt/barrier_breaker/feeds/luci/applications文件夹下. 二. /home ...

  2. opencv读取并播放avi视屏

    视屏的本质是一些静态的图像的集合,opencv可以不断读取视屏中的图片,显示,就产生了类似电影的效果. 这样也就可以通过opencv对实时的视屏流进行处理了. #include "stdaf ...

  3. MySQL集群Percona XtraDB Cluster安装搭建步骤详解

    http://www.linuxidc.com/Linux/2017-05/143501.htm http://blog.csdn.net/thundermeng/article/details/52 ...

  4. jni头文件自动生成

    写一个测试代码,大概如下 package aa.bb; public class TestClass { public native void aaaBBB(); } 在项目的src目录下执行 jav ...

  5. 多线程执行顺序诡异现象谈,你不知道的pthread_create

    引文:学而时习之,不亦说乎.总是忙于具体项目,业务功能的实现:关于编程本身的技能都要有些生疏了,于是就选择了几个专题做了一次温习,重点放在了多线程和多进程上,跑了一个实例,居然有新的发现: (1)多个 ...

  6. excel注释怎么添加图片

    批注中加图片:插入批注>点击批注边框线(注意是边线框,不是里面的编辑区域),右键,设置批注格式>颜色与线条>填充,选择颜色,填充效果>图片>选择图片>确定>确 ...

  7. hdu 1278 逃离迷宫

    逃离迷宫 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. Java-Runoob-高级教程-实例-数组:06. Java 实例 – 数组获取最大和最小值

    ylbtech-Java-Runoob-高级教程-实例-数组:06. Java 实例 – 数组获取最大和最小值 1.返回顶部 1. Java 实例 - 数组获取最大和最小值  Java 实例 以下实例 ...

  9. 小甲鱼-013元组tuple:上了枷锁的列表

    1.创建和访问一个元组 1.1创建元组 元组的标志性符号是 , tuple1 = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) #定义单个元素的元组,要加 , tuple2 = (1 ...

  10. 1036 Boys vs Girls (25 分)

    1036 Boys vs Girls (25 分) This time you are asked to tell the difference between the lowest grade of ...