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) -- 够出货的,要修改数据库 [email protected] 数量大于输入的参数数量 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 --输出最终结果
一个需要数百行代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码,可作为安全机制使用。
时间: 2024-10-19 02:46:14