存储过程:
存储过程(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>
存储过程示例一:
执行存储过程方法一:
执行存储过程方法二:
上面说过,存储过程可以定义返回值。
示例:
修改存储过程示例:
利用存储过程查找三个表内的信息示例:
示例:
示例二:
使用返回值进行接收的示例:
简单使用返回值的方法示例:
在创建存储过程时,我们可以设置它有一个默认值。
示例:
定义一个@count接收返回值,用来查看是否含有这个学生
![](https://images2015.cnblogs.com/blog/1034415/201611/1034415-20161120211100060-49288948.png)
超市管理系统:
表一:门店仓库表 MenDian
列名:商品编号scode、商品名称sname、商品数量sshu、商品单价sprice、商品进货商sgong
表二:进货商的表 Gongying
列名:进货商的编号gcode、进货商名称gname,进货商联系人glian、进货商的电话gtel
表三:小票表 Xiaopiao
列名:小票编号pcode、商品名称pname、商品单价pprice、数量pshu、总价pzong、时间ptime
要求,写一个存储过程,买东西,自动添加小票进入。
1.我又没有这个商品???
2.你买的数量在我店里能不能够???
存储过程的参数,商品编号,要的数量
表一:门店仓库表 MenDian
列名:商品编号scode、商品名称sname、商品数量sshu、商品单价sprice、商品进货商sgong
表二:进货商的表 Gongying
列名:进货商的编号gcode、进货商名称gname,进货商联系人glian、进货商的电话gtel
表三:小票表 Xiaopiao
列名:小票编号pcode、商品名称pname、商品单价pprice、数量pshu、总价pzong、时间ptime
要求,写一个存储过程,买东西,自动添加小票进入。
1.我又没有这个商品???
2.你买的数量在我店里能不能够???
存储过程的参数,商品编号,要的数量
1 USE lianxi0928 2 GO 3 CREATE table mendian 4 ( 5 scode int primary key identity(101,1), 6 sname varchar(18), 7 sshu int, 8 sprice decimal(18,2), 9 sgong int, 10 ) 11 CREATE table gongying 12 ( 13 gcode int primary key identity(1,1), 14 gname varchar(18), 15 glian varchar(18), 16 gtel decimal(18,0) 17 ) 18 CREATE table xiaopiao 19 ( 20 pcode int primary key identity(11,1), 21 pname varchar(18), 22 pprice decimal(18,2), 23 pshu int, 24 pzong decimal(18,2), 25 ptime datetime, 26 ) 27 INSERT INTO mendian VALUES 28 ( '三星note7',42,4000,'1') 29 INSERT INTO mendian VALUES 30 ( 'iphone6s',52,5000,'2') 31 INSERT INTO mendian VALUES 32 ( '华为P9',12,2000,'3') 33 INSERT INTO mendian VALUES 34 ( '板砖',78,40,'4') 35 INSERT INTO mendian VALUES 36 ( '暖手宝',22,30,'5') 37 38 INSERT INTO gongying VALUES 39 ( '三星','三星公司',123456) 40 INSERT INTO gongying VALUES 41 ( '苹果','苹果公司',231341) 42 INSERT INTO gongying VALUES 43 ( '华为','华为公司',647121) 44 INSERT INTO gongying VALUES 45 ( '诺基亚','微软公司',593113) 46 INSERT INTO gongying VALUES 47 ( '小米','小米公司',090921) 48 SELECT*FROM xiaopiao 49 SELECT*FROM mendian 50 SELECT*FROM gongying 51 52 ALTER proc goumai 53 @gm int, @shu int 54 as 55 begin 56 declare @q1 int 57 select @q1= COUNT(*) from mendian where scode=@gm 58 IF @q1=1 59 begin 60 declare @we int 61 select @we= sshu from mendian where scode=@gm 62 IF @we>@shu 63 begin 64 declare @z1 varchar(18) 65 select @z1=sname from mendian where scode=@gm 66 declare @z2 decimal(18,2) 67 select @z2=sprice from mendian where scode=@gm 68 declare @z3 decimal(18,2) 69 set @z3=@shu*@z2 70 declare @time datetime 71 set @time=GETDATE() 72 insert INTO xiaopiao VALUES(@z1,@z2,@shu,@z3,@time) 73 update mendian SET sshu=@we-@shu where scode=@gm 74 end 75 else 76 begin 77 declare @i1 varchar(18) 78 select @i1=gname from gongying where gcode=(SELECT sgong from mendian WHERE scode=@gm) 79 declare @i2 varchar(18) 80 select @i2=glian from gongying where gcode=(SELECT sgong FROM mendian WHERE scode=@gm) 81 declare @i3 varchar(18) 82 select @i3= gtel from gongying where gcode=(SELECT sgong FROM mendian WHERE scode=@gm) 83 print ('数量不足,请联系供应商'+@i1+',联系人:'+@i2+'联系电话'+cast(@i3 as varchar(18))) 84 end 85 end 86 else 87 begin 88 print('没有此商品') 89 end 90 END 91 GO 92 EXEC goumai 106,4 93 SELECT *FROM mendian 94 SELECT *FROM xiaopiao