存储过程简单例子

什么是存储过程:存储过程能够说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法同样实现一些功能(对单表或多表的增删改查),而后再给这个代码块取一个名字,在用到这个功能的时候调用他就好了。

存储过程的好处

1.因为数据库执行动做时,是先编译后执行的。然而存储过程是一个编译过的代码块,因此执行效率要比T-SQL语句高。

2.一个存储过程在程序在网络中交互时能够替代大堆的T-SQL语句,因此也能下降网络的通讯量,提升通讯速率。

3.经过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而确保数据的安全。html

存储过程一些语法,次语法从别处复制而来sql

--------------建立存储过程-----------------

CREATE PROC [ EDURE ] procedure_name [ ; number ]
    [ { @parameter data_type }
        [ VARYING ] [ = default ] [ OUTPUT ]
    ] [ ,...n ]

[ WITH
    { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]

--------------调用存储过程-----------------

EXECUTE Procedure_name '' --存储过程若是有参数,后面加参数格式为:@参数名=value,也可直接为参数值value

--------------删除存储过程-----------------

drop procedure procedure_name    --在存储过程当中能调用另一个存储过程,而不能删除另一个存储过程

下面以一个例子演示一下存储过程,例子永远都是最好理解的数据库

1,首先建立一个表,语句以下安全

CREATE TABLE USERACCOUNT(
USERID VARCHAR(25),
NAME VARCHAR(25),
PASSWORLD VARCHAR(25),
REGISTERTIME DATETIME,
REGISTERIP INT
);

2,插入value,语句以下,(插入多少条随意)网络

INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(12,6,6,2012-12-31,6);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(18,5,5,2013-01-01,5);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(19,1,1,2013-01-01,1);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(20,2,2,2013-01-01,2);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(21,3,3,2013-01-01,3);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(22,4,4,2013-01-01,4);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(23,5,5,2013-01-01,5);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(24,6,6,2013-01-01,6);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(25,7,7,2013-01-01,7);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(26,8,8,2013-01-01,8);
INSERT INTO USERACCOUNT(USERID,NAME,PASSWORDW,REGISTERTIME,REGISTERIP)
VALUES(NULL,NULL,NULL,NULL,NULL);

建立好表格以下,table line缺失了,不影响理解code

USERID	NAME	PASSWORLD	REGISTERTIME	REGISTERIP
12	6	6	1905-05-24 00:00:00.000	6
18	5	5	1905-07-05 00:00:00.000	5
19	1	1	1905-07-05 00:00:00.000	1
20	2	2	1905-07-05 00:00:00.000	2
21	3	3	1905-07-05 00:00:00.000	3
22	4	4	1905-07-05 00:00:00.000	4
23	5	5	1905-07-05 00:00:00.000	5
24	6	6	1905-07-05 00:00:00.000	6
25	7	7	1905-07-05 00:00:00.000	7
26	8	8	1905-07-05 00:00:00.000	8
NULL	NULL	NULL	NULL	NULL

3,建立一个简单的select 存储过程htm

-------------建立名为GetUserAccount的存储过程----------------
create Procedure GetUserAccount
as
select * from UserAccount
go

-------------执行上面的存储过程----------------
exec GetUserAccount

执行结果:至关于运行 select * from USERCOUNT 这行代码,结果为整个表的数据。blog

总结:我的理解用到存储过程的场景,是批量处理或者定时处理数据的时候用到,这样能够大大减小重复写sql,节省时间且高效,之后用到多了还会深刻了解。编译

 

有人写的更好:table

http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html

相关文章
相关标签/搜索