• SQL存储过程、视图


    存储过程:

    存储过程(stored procedure)有时也称为sproc。存储过程存储于数据库中而不是在单独的文件中,有输入参数、输出参数以及返回值等。

    在数据库中,创建存储过程和创建其他对象的过程一样,除了它使用的AS关键字外。存储过程的基本语法如下:

    CREATE PROCDUER|PROC <sproc name>

        [<parameter name>[schema.]<data type>[VARYING][=<default value>][OUT [PUT]][,

        [<parameter name>[schema.]<data type>[VARYING][=<default value>][OUT [PUT]][,

        ...]]

    [WITH

        RECOMPILE|ENCRYPTION|[EXECUTE AS {CALLER|SELF|OWNER|<'user name'>}]

    [FOR REPLICATION]

    AS

        <code>|EXTERNAL NAME <assembly name>.<assembly class>

    存储过程示例一:

    执行存储过程方法一:

     

    执行存储过程方法二:

     

          上面说过,存储过程可以定义返回值。

    示例:

     

    修改存储过程示例:

     

    利用存储过程查找三个表内的信息示例:

     

    示例:

     

    示例二:

    练习:

    要求;写一个存储过程,买东西,自动添加小票进入。

    1.我又没有这个商品???
    2.你买的数量在我店里能不能够???

    create database lianxi120
    go
    use lianxi120
    go
    CREATE table mendian
    (
        scode int primary key identity(101,1),
        sname varchar(18),
        sshu int,
        sprice decimal(18,2),
        sgong int,
    )
    CREATE table gongying
    (
        gcode int primary key identity(1,1),
        gname varchar(18),
        glian varchar(18),
        gtel decimal(18,0)
    )
    CREATE table xiaopiao
    (
        pcode int primary key identity(11,1),
        pname varchar(18),
        pprice decimal(18,2),
        pshu int,
        pzong decimal(18,2),
        ptime datetime,
    )
    insert into mendian values('石油',20,70,1)
    insert into mendian values('毒品',100,2000,2)
    insert into mendian values('M4-S',70,16000,2)
    insert into mendian values('天空套',1000,5,3)
    insert into mendian values('iPhone7',7000,5,4)
    insert into mendian values('兰博基尼',5,4500000,5)
    insert into mendian values('绿茶婊',200,3000,5)
    
    insert into gongying values('沙特王国','土喀拉耶鲁斯基',98876767675)
    insert into gongying values('金三角','迪迦',09783356782)
    insert into gongying values('DNF','马化腾',06783357524)
    insert into gongying values('全球iPhone直营店','乔布斯',18666666666)
    insert into gongying values('三里屯','Licuy',18678199999)
    
    select*from mendian
    select*from gongying
    
    create proc chaoshi
    as
    begin
    select*from mendian
    select*from gongying
    select*from xiaopiao
    end
    go
    exec chaoshi
    
    create proc guanli
    @shangpin int, @shuliang int
    as
    begin
    declare @sp int
    --count():统计你查询出来的记录数 
    select @sp=COUNT(*) from mendian where scode =@shangpin
    if @sp =1
         begin 
           declare @sl int
           select @sl = sshu from mendian where scode =@shangpin
           if @sl>@shuliang
                 begin
                      declare @sn varchar(18)
                      select @sn = sname from mendian where scode =@shangpin
                      declare @spr decimal(18,2)
                      select @spr = sprice from mendian where scode =@shangpin
                      declare @zong decimal(18,2)
                      set @zong =@spr * @shuliang
                      declare @time datetime
                      set @time=getdate()
                      insert INTO xiaopiao VALUES(@sn,@spr,@sl,@zong,@time)
                      update mendian SET sshu=@sl-@shuliang where scode=@shangpin
                 end
                 begin
                      declare @gy varchar(18)
                      select @gy=gname from gongying where gcode=(SELECT sgong from mendian where scode=@shangpin)
                      declare @gname varchar(18)
                      select @gname=glian from gongying where gcode=(SELECT sgong from mendian where scode=@shangpin)
                      declare @gtel decimal(18,0)
                      select @gtel=gtel from gongying where gcode=(SELECT sgong from mendian where scode=@shangpin)
                      print '商品数量不足,请联系供应商'+@gy+',联系人:'+@gname+',联系电话:'+cast(@gtel as varchar(18))
                 end 
         end              
     else
         begin
               print'查无此商品'
         end
    end 
    GO
    
    update mendian set sshu=100 where scode=103
    select * from mendian
    select * from xiaopiao
    exec guanli 103,10                 
  • 相关阅读:
    学习手机安全卫士项目源码记录(一)
    AIDL Service
    让一个Activity在开机后自动显示
    如何拦截手机屏幕休眠和唤醒动作
    润前报表简单问题
    javaEE框架的session获取
    UEditer使用
    jQuery动态绑定生成的元素
    javadoc 生成乱码
    个人异常收集_SE_EE_WEB...
  • 原文地址:https://www.cnblogs.com/jiuban2391/p/6083135.html
Copyright © 2020-2023  润新知