• SQL Server 第四堂课,创建存储过程。存储过程是一组编译在单个执行计划中的transact-SQL语句。存储过程相当于C#函数,可以允许模块化程序设计,允许更快执行如果某操作需要大量transct-SQL代码或需要重复执行,将在创建存储过程中对其进行分析和优化。


    select *from fruit
    use shuiguo 
    --存储过程格式
    create proc 存储过程名
    --输入参数:当调用存储过程时,所需要输入的数据
    --输出参数:从存储过程中赋值后带出数据
    as
        --存储过程内容
        return 返回值
    go
    exec 返回值=存储过程名 参数一,参数二,....参数N
    
    --进销存存储过程
    alter proc Jinchuhuo   --定义函数名,相当于C#语言里的 public int 函数名
    @ids varchar(50),      --定义变量,需要输入参数
    @name varchar(50),
    @price decimal(8,2),
    @source varchar(50),
    @stack varchar(50),
    @numbers int,--输入正数代表进货,输入负数代表出货
    @image varchar(50)
    as
        if @numbers>0 --这代表进货
        begin 
            --先查询是否有这种货
            declare @shiok int       --定义新变量
            select @shiok=COUNT(*) from Fruit where Ids = @ids  --输入水果编号的参数,查询水果表里是否有这个编号,然后把查询值赋给变量
            if @shiok>0--有这种货,那就直接改库存
            begin
                update Fruit set Numbers=Numbers+@numbers where Ids=@ids   --把输入的参数@numbers加上水果表里的原来numbers
                return 2 -- 加库存成功
            end
            else--没有这种货,新增到数据库表中
            begin
                insert into Fruit values(@ids,@name,@price,@source,@stack,@numbers,@image)
                return 3--新增数据成功
            end
        end
        else--出货
        begin
            declare @isok int --定义新变量,用来接收根据输入编号查询到的信息数量
            select @isok=COUNT(*) from Fruit where Ids = @ids
            if @isok>0--说明有我们要出货的产品
            begin
                declare @kcnum int --用来接收库存数量
                select @kcnum=numbers from Fruit where Ids=@ids  --把查询出来的水果的numbers赋给@kcnum
                if @kcnum>=abs(@numbers) -- 够出货的,要修改数据库   --@kcnom 数量大于输入的参数数量
                begin
                    update Fruit set Numbers=@kcnum+@numbers where Ids=@ids -- 修改库存--出货后修改库存
                    return 1 -- 出货成功
                end
                else
                begin
                    return -2 --有货但不足
                end
            end
            else--没有要出货的产品,直接返回0
            begin
                return -1 -- 没有这个货
            end
        end
    go
    
    declare @a int   --定义新变量接受jinchuhuo里的函数
    exec @a = jinchuhuo 'k006','蟠桃',99,'沂源',1,50,'image/4.gif'   --输入参数带入存储过程执行,相当于C#函数
    print @a   --输出最终结果

      一个需要数百行代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码,可作为安全机制使用。

  • 相关阅读:
    树状数组——求和问题题解
    java 基础01
    java jdk 配置
    一位资深程序员大牛给予Java初学者的学习路线建议
    汇编 OD 标志位 置位相关指令
    汇编 SETG,SETL ,SETGE, SETLE指令
    汇编 指令lodsb,lodsw,lodsd
    汇编 STOSB, STOSW, STOSD指令
    汇编 LOOP,LOOPD指令
    汇编 STD和CLD指令
  • 原文地址:https://www.cnblogs.com/275147378abc/p/4460056.html
Copyright © 2020-2023  润新知