create database chaoshils--创建一个数据库
go
use chaoshils--使用这个数据库
go
create table gongying--创建一个供应商的表格
(
gcode int primary key identity(1001,1),--供应商编号,主键
gname varchar(20),--名称
gsdh varchar(20),--电话
gsdz varchar(20)--地址
) --向供应商表格中添加数据
insert into gongying values('可口可乐公司','','山东青岛')
insert into gongying values('花生油公司','','山东济南')
insert into gongying values('绿茶公司','','山东日照')
insert into gongying values('矿泉水公司','','山东潍坊')
insert into gongying values('红星二锅头公司','','北京') create table chaoshi--创建一个超市的表格
(
ccode int primary key,--产品编号
cname varchar(20),--产品名称
cshu int,--产品数量
cjin decimal(18,2),--进价
cshou decimal(18,2),--售价
cgcode int --供应商编号,供应商表的外键
) --向超市表格中添加数据
insert into chaoshi values(10001,'可口可乐',100,2,3,1001)
insert into chaoshi values(10002,'花生油',50,40,80,1002)
insert into chaoshi values(10003,'绿茶',100,8,20,1003)
insert into chaoshi values(10004,'矿泉水',150,1,2,1004)
insert into chaoshi values(10005,'红星二锅头',120,3,5,1005) --创建一个小票的表格,不能直接插入数据,在下面存储过程中根据商品的销售情况向里面添加数据
create table xiaopiao
(
xcode int,--产品编号,超市表的外键
xname varchar(20),--产品名称
xshu int,--购买的产品数量
xjiage decimal(18,2),--产品单价
zjia decimal(18,2) --产品总价
) select*from gongying
select*from chaoshi create proc liushui --创建一个存储过程用来记录卖出货物的数量价格添加于小票表中
@mai int,--返回一个参数,购买的数量
@hcode int--购买的商品的编号
as
begin
declare--声明一下使用下面定义的变量
@name varchar(20),
@shu int,
@danjia decimal(18,2),
@zong decimal(18,2),
@count int
select @name=cname from chaoshi where ccode=@hcode--通过返回参数的商品编号在超市中查找商品名称赋值于变量@name中
select @shu=cshu from chaoshi where ccode=@hcode--通过编号查找此商品现有的而数量赋值于变量@shu中
select @danjia=cshou from chaoshi where ccode=@hcode--通过编号查找此产品的价格赋值于变量@danjia中
set @zong=@danjia*@mai--货物价格@danjia乘以返回参数中购买的数量@mai等于总价格,用变量@zong接收一下 select @count=count(*)from chaoshi where ccode=@hcode--查看一下返回的参数商品编号是否存在,存在值为1,不存在为0,接收于变量@count中 if @count>0--如果@count不为0,则存在这种商品
begin
if @shu> = @mai--如果超市内商品的数量大于或者等于购买的数量
begin
insert into xiaopiao values(@hcode,@name,@mai,@danjia,@zong)--则向xiaopiao表中添加购买信息
select xcode as 编号,xname as 产品名称,xshu as 购买数量,xjiage as 单价,zjia as 合计 from xiaopiao--把添加到表格中的信息查询一下,列名改为汉字显示
end
else if @shu<@mai--如果超市内的商品数量小于购买的数量
begin
print'货物不足' --则,货物不足
end
end
else if @count=0--如果@count值为0,则没有这件商品
begin
print'没有此商品'
end end
go--选中执行此存储过程,只能执行一次 exec liushui 50,10008--此处是执行存储过程liushui并返回两个参数,数量和商品编号,可修改数量以及商品参数选择其他商品
--此处商品编号的参数在表中并有此编号的商品,则执行@count=0这一步,没有此商品,因此小票表中就不会添加数
--据
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. 一个spring boot集成dubbo的小例子

    请移步github,介绍和代码均在上面了:https://github.com/wuxun1997/voicebox 这里再多说两句.github上的这个小例子默认使用组播作为注册中心,你也可以把组播 ...

  2. linux中uptime命令查看linux系统负载

    阅读目录 uptime cat /proc/loadavg 何为系统负载呢? 进阶参考 uptime 另外还有一个参数 -V(大写),是用来查询版本的 [appdeploy@CNSZ22PL0088: ...

  3. 学习笔记之Redis

    Redis https://redis.io/ redis.cn http://www.redis.cn/ Azure Redis Cache Documentation - Tutorials, A ...

  4. [UE4]Acotr

    任何能被放在关卡中的对象都是Actor Tick是每帧都会调用的事件

  5. python学习菜单

    一.python简介 二.python字符串 三.列表 四.集合.元组.字典 五.函数 六.python 模块 七.python 高阶函数 八.python 装饰器 九.python 迭代器与生成器  ...

  6. 提示ORA-01144: File size (13107200 blocks) exceeds maximum of 4194303 blocks 最大4194303 block(转)

    并不是100g的表空间,是100g的数据文件.一般情况下,单个数据文件的最大为32g.解决方法:1.创建多个数据文件,都不能超过32g2.创建大表空间.create bigfile tablespac ...

  7. DRL前沿之:Benchmarking Deep Reinforcement Learning for Continuous Control

    1 前言 Deep Reinforcement Learning可以说是当前深度学习领域最前沿的研究方向,研究的目标即让机器人具备决策及运动控制能力.话说人类创造的机器灵活性还远远低于某些低等生物,比 ...

  8. Selenium 错误处理之:stale element reference: element is not attached to the page document

    出现该错误的原因是页面在获取到DOM元素之后到引用元素之间页面进行了刷新,所以需要再次获取该DOM元素即可.

  9. OMIM 表型和基因如何关联

    OMIM数据库:大神私藏的数据库,99.9%的人都不知道! 2019-03-04 11:00乳腺癌/医生/肺癌 “ GEO.NCDB.TCGA.SEER数据库这些我都知道,但OMIM是什么鬼? OMI ...

  10. scala.XML处理

    XML scala提供了对xml字面量的内建支持,我们可以很容易的在程序代码中生成xml片段, scala类库也包含了对xml常用处理的支持 有时候scala会错误识别出xml字面量 如x < ...