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. 【unittest】unittest单元模块做assert

    我在Windows上开发Python用的版本是2.7,在Ubuntu上开发的版本是2.6,而在Python的unittest模块中,有几个方法是在2.7才有的,它们是: Method Checks t ...

  2. java 中的好东西 jackson

    转自: https://github.com/FasterXML/jackson 重要的是: jackson 支持 第三方数据类型 jsonobject jsonarray( json.org/jav ...

  3. 手动安装Android Support Library(23.0.1)

    在搭建React-Native开发环境的时候,使用Android Sdk Manager无法找到Android Support Library这一项. 所以google了一下,找到了解决办法. 访问A ...

  4. 【Spring学习笔记-MVC-14】Spring MVC对静态资源的访问

    作者:ssslinppp       参考链接: http://www.cnblogs.com/luxh/archive/2013/03/14/2959207.html  http://www.cnb ...

  5. Nginx+tomcat+redis实现session共享

    Nginx+tomcat+redis实现session共享 1,安装nginx,使用yum -y install nginx 这是epel源中的,需要安装epel源. 2,配置nginx. 在ngin ...

  6. HDU 1116 Play on Words(并查集和欧拉回路)(有向图的欧拉回路)

    Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  7. xcode编译失败

    iPhone自动化需要使用WDA.经过一段时间,再次编译,会出现WDA编译失败的问题,提示 The operation couldn't be completed. Unable to log in ...

  8. 部署DNS从服务器

    修改主服务器中区域信息文件: # vi /etc/named.rfc1912.zones 检查配置文件是否有错误 # named-checkconf 重启named服务程序,让配置文件生效 #syst ...

  9. JAVA的非对称加密算法RSA——加密和解密

    原文转载至:https://www.cnblogs.com/OnlyCT/p/6586856.html 第一部分:RSA算法原理与加密解密 一.RSA加密过程简述 A和B进行加密通信时,B首先要生成一 ...

  10. RmNet,CDC-ECM ,NDIS,RNDIS区别

    RmNet和CDC-ECM区别:更像是两种拨号方式的区别,RmNet获取公网IP,ECD-ECM获取局域网IP. 在高通平台上,rmnet driver 和标准的CDC-ECM是有区别的,rmnet ...