存儲過程簡單例子

什麼是存儲過程:存儲過程能夠說是一個記錄集吧,它是由一些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

相關文章
相關標籤/搜索