什么是存儲(chǔ)過程旗吁,相信搜到文章的都已經(jīng)知道了,不過還是拷貝一段停局,供大家參考
什么是存儲(chǔ)過程呢很钓?
存儲(chǔ)過程就是作為可執(zhí)行對象存放在數(shù)據(jù)庫中的一個(gè)或多個(gè)SQL命令香府。
通俗來講:存儲(chǔ)過程其實(shí)就是能完成一定操作的一組SQL語句。
那為什么要用存儲(chǔ)過程呢码倦?
1.存儲(chǔ)過程只在創(chuàng)造時(shí)進(jìn)行編譯企孩,以后每次執(zhí)行存儲(chǔ)過程都不需再重新編譯,而一般SQL語句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過程可提高數(shù)據(jù)庫執(zhí)行速度袁稽。
2.當(dāng)對數(shù)據(jù)庫進(jìn)行復(fù)雜操作時(shí)勿璃,可將此復(fù)雜操作用存儲(chǔ)過程封裝起來與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用。
3.存儲(chǔ)過程可以重復(fù)使用,可減少數(shù)據(jù)庫開發(fā)人員的工作量推汽。
4.安全性高,可設(shè)定只有某些用戶才具有對指定存儲(chǔ)過程的使用權(quán)
正文:
此片文章建立存儲(chǔ)過程主要是為了使用http訪問SqlServer數(shù)據(jù)庫蝗柔,主要介紹兩種方式,一種是在URL中直接使用民泵,另一種是通過模板使用
第一步,建立存儲(chǔ)過程
打開SqlServer企業(yè)管理器槽畔,選中要操作的數(shù)據(jù)庫栈妆,菜單欄工具->SQL查詢分析器,彈出一個(gè)窗口厢钧,在窗口的標(biāo)題欄核對下操作的服務(wù)器和數(shù)據(jù)庫是否正確鳞尔,如果正確就可以開始創(chuàng)建代碼。已經(jīng)創(chuàng)建的可以在左邊框中看到早直,窗體的上方有分析查詢寥假,和執(zhí)行查詢,就不多做介紹直接代碼霞扬,謹(jǐn)記最后執(zhí)行
(1)創(chuàng)建不帶參數(shù)名字temp1的存儲(chǔ)過程糕韧,過程中執(zhí)行一個(gè)查表操作
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'temp1' )
DROP PROCEDURE temp1
GO
CREATE PROCEDURE temp1
AS
SELECT *
FROM?? Table1
FOR XML AUTO
GO
說明:IF EXISTS判斷是否存在temp1,如果存在喻圃,drop刪除萤彩,create創(chuàng)建,as執(zhí)行sql語句,后面的查詢也可改為
AS? ?
SELECT '<ROOT>'
SELECT *
FROM? ? Table1
FOR XML AUTO
SELECT '<ROOT>'
GO
使用:http://172.144.1.100:85/northwind?sql=EXECUTE+temp1&root=ROOT(修改前)
http://172.144.1.100:85/northwind?sql=EXECUTE+temp1(修改后)
172.144.1.100:85 是虛擬目錄northwind所在服務(wù)器的地址
(2)創(chuàng)建帶參數(shù)名字temp5的存儲(chǔ)過程斧拍,過程中執(zhí)行一個(gè)插入操作
IF EXISTS (SELECT name FROM Table1
WHERE name = 'temp5')
DROP PROCEDURE temp5
GO
CREATE PROCEDURE temp5 @num int,@name varchar(50)
AS
INSERT
INTO? Table1
VALUES? (@num,@name)
GO
說明:在創(chuàng)建的時(shí)候附帶兩個(gè)變量雀扶,注意和數(shù)據(jù)庫的類型一致酱吝,插入不需要返回所以不需要FOR XML AUTO
使用:http://172.144.1.100:85/northwind?sql=execute+temp5+@num=11+,+@name='joy'
最后簡單介紹一下在模版中執(zhí)行存儲(chǔ)過程
通過exec temp1執(zhí)行
模版的具體使用可參考HTTP訪問SqlServer模板以及使用?