zoukankan      html  css  js  c++  java
  • 存储过程练习

     --创建三个表并写一个简单的存储过程,
    --要求可以进货、出货并打印小票。
    --1,在进货时,没有此商品,直接添加,有此商品,添加进货数量
    --2,出货时,有此商品并且数量充足,可以直接减去总数
    --不够的时候,货物量不够,请及时补充
    --3,出货时,没有此商品,print没有此商品


    --表一:供应商  gongying
    --供应商编号gcode    int    主键   从1001开始,依次加1
    --供应商名称gname varchar(50)
    --供应商联系电话gtel varchar(50)

    --表二: 仓库表   cangku
    --产品编号ccode int      主键10001
    --产品名称cname varchar(50)
    --产品价格cprice decimal(18,2)
    --产品数量cshu int
    --供货商的编号 cgcode int   外键(供应商表的编号)

    --表三: 小票表 piao
    --小票编号pcode int    从100000001开始依次加1
    --产品名称pname varchar(50)
    --产品单价pprice decimal(18,2)
    --产品数量pshu int
    --产品总价pzong decimal
     

    create table gongying
    (
    gcode int identity(1001,1) primary key,
    gname varchar(50),
    gtel varchar(50)
    )
    go
    create table cangku1
    (
    ccode int primary key,--10001
    cname varchar(50),
    cprice decimal (18,2),
    cshu int ,
    cgcode int
    )
    go
    create table piao
    (
    pcode int identity(1000001,1),
    pname varchar(50),
    pprice decimal(18,2),
    pshu int,
    pzong decimal (18,2)
    )
    go
    insert into gongying values ('海尔','0211-7589654')
    insert into gongying values ('海信','0311-6556654')
    insert into gongying values ('恒佳','0531-3589654')
    insert into gongying values ('艾玛','1211-4589654')
    insert into gongying values ('富士康','0811-12589654')
    go
    insert into cangku1 values (10001.,'电视',1288,35,1001)
    insert into cangku1 values (10002.,'冰箱',888,20,1002)
    insert into cangku1 values (10003.,'洗衣机',569,30,1003)
    insert into cangku1 values (10004.,'电脑',2608,40,1004)
    insert into cangku1 values (10005.,'笔记本',3400,48,1005)
    go
    create proc oeproc
    @code int,
    @name varchar(50),
    @price decimal(18,2),
    @shu int,
    @gcode int
    as
    declare @count int
    select @count=COUNT(*)from cangku1 where ccode=@code
    if @count=1--有此商品
    begin
    if @shu>=0--进货
    begin
    update cangku1 set cshu=cshu+@shu where ccode =@code
    end
    else--出货
    begin
    declare @sum int
    select @sum=cshu from cangku1 where ccode=@code
    if @sum+@shu>=0
    begin
    update cangku1 set cshu=cshu+@shu where ccode =@code
    insert into piao values (@name,@price,abs (@shu),ABS(@price*@shu))
    end

    else
    begin
    print '货物不够,请及时补充'
    end
    end
    end
    else--无此商品
    begin
    if @shu>=0--进货
    begin
    insert into cangku1 values(@code,@name,@price,@shu,@gcode)
    end
    else
    begin
    print '没有此货物,及时补充'
    end
    end
    go
    select * from gongying
    select * from cangku1

    --执行
    --进货,没有此产品
    exec oeproc 1006,'手机',688,20,1002
    --进货,有此产品
    exec oeproc 1006,'手机',688,10,1002

    --出货,有此产品,货物不够
    exec oeproc 1006,'手机',688,-50,1002

    --出货,有此产品,且充足
    exec oeproc 1006,'手机',688,-10,1002

    --出货,没有此产品
    exec oeproc 10007,'空调',1088,10,1001

  • 相关阅读:
    Spark Streaming:大规模流式数据处理的新贵
    HBase源码学习系列
    Hadoop源码分析之Configuration
    sql server存储引擎启动错误(SQL Server could not spawn FRunCM thread)
    Redis(1.15)Redis监控(待写)
    Redis(1.14)Redis日常管理与维护
    Redis(1.13)Redis cluster 分布式集群手动配置
    (5.3.5)数据库迁移——数据库与文件组的位置迁移(同一实例)
    Redis(1.12)Redis cluster搭建常见错误
    Redis(1.11)Redis4.0.11 cluster 分布式集群搭建
  • 原文地址:https://www.cnblogs.com/dulovexin/p/4995042.html
Copyright © 2011-2022 走看看