存储过程

存储过程:

存储过程(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接收返回值,用来查看是否含有这个学生

 

 

 超市管理系统:

表一:门店仓库表   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

 

 

 

posted @ 2016-11-20 21:11  尘暮  阅读(567)  评论(0编辑  收藏  举报