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   --输出最终结果

 

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。