SQL 存储过程 超市小票打印

Posted 小飛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 存储过程 超市小票打印相关的知识,希望对你有一定的参考价值。

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(可口可乐公司,232323,山东青岛)
insert into gongying values(花生油公司,323232,山东济南)
insert into gongying values(绿茶公司,565656,山东日照)
insert into gongying values(矿泉水公司,656565,山东潍坊)
insert into gongying values(红星二锅头公司,878787,北京)


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 存储过程 超市小票打印的主要内容,如果未能解决你的问题,请参考以下文章

案例一:打印超市的购物小票

java票据打印,类似于超市的小票那样的,怎么控制打印的纸张大小啊?

Java-超市购物小票案例-详细介绍

数据库存储系统应用,超市小票系统

MFC打印技术CPrintDlg

超市/饭店等收据或者小票的生成代码