主頁(yè) > 知識(shí)庫(kù) > SQL Server存儲(chǔ)過(guò)程入門(mén)學(xué)習(xí)

SQL Server存儲(chǔ)過(guò)程入門(mén)學(xué)習(xí)

熱門(mén)標(biāo)簽:承德地圖標(biāo)注公司名需要花錢(qián)嗎 電銷(xiāo)外呼系統(tǒng)軟件功能 慶陽(yáng)地圖標(biāo)注 榕城市地圖標(biāo)注 怎么給高德做地圖標(biāo)注 咸陽(yáng)電腦外呼系統(tǒng)運(yùn)營(yíng)商 浙江穩(wěn)定外呼系統(tǒng)供應(yīng)商 美團(tuán)地圖標(biāo)注商戶(hù)認(rèn)證注冊(cè) 北京400電話辦理多少錢(qián)

存儲(chǔ)過(guò)程的定義,

存儲(chǔ)過(guò)程(Stored Procedure),是一組為了完成特定功能的SQL 語(yǔ)句,集經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù),如果該存儲(chǔ)過(guò)程帶有參數(shù)來(lái)執(zhí)行。
在SQL Server 的系列版本中,存儲(chǔ)過(guò)程分為兩類(lèi):系統(tǒng)提供的存儲(chǔ)過(guò)程和用戶(hù)自定義存儲(chǔ)過(guò)程。系統(tǒng)SP,主要存儲(chǔ)master 數(shù)據(jù)庫(kù)中,并以sp_為前綴并且系統(tǒng)存儲(chǔ)過(guò)程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQL Server。
用戶(hù)自定義存儲(chǔ)過(guò)程是由用戶(hù)創(chuàng)建,并能完成某一特定功能,如:查詢(xún)用戶(hù)所需數(shù)據(jù)信息的存儲(chǔ)過(guò)程。

這里我們看看存儲(chǔ)過(guò)程的好處;

(1)重復(fù)使用。存儲(chǔ)過(guò)程可以重復(fù)使用,從而可以減少數(shù)據(jù)庫(kù)開(kāi)發(fā)人員的工作量。
(2)提高性能。存儲(chǔ)過(guò)程在創(chuàng)建的時(shí)候就進(jìn)行了編譯,將來(lái)使用的時(shí)候不用再重新編譯。一般的SQL語(yǔ)句每執(zhí)行一次就需要編譯一次,所以使用存儲(chǔ)過(guò)程提高了效率。
(3)減少網(wǎng)絡(luò)流量。存儲(chǔ)過(guò)程位于服務(wù)器上,調(diào)用的時(shí)候只需要傳遞存儲(chǔ)過(guò)程的名稱(chēng)以及參數(shù)就可以了,因此降低了網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。
(4)安全性。參數(shù)化的存儲(chǔ)過(guò)程可以防止SQL注入式的攻擊,而且可以將Grant、Deny以及Revoke權(quán)限應(yīng)用于存儲(chǔ)過(guò)程。

好了,我們來(lái)看看創(chuàng)建的基本語(yǔ)法

定義存儲(chǔ)過(guò)程的語(yǔ)法

CREATEPROC[EDURE]存儲(chǔ)過(guò)程名
@參數(shù)1數(shù)據(jù)類(lèi)型=默認(rèn)值,
…… ,
@參數(shù)n數(shù)據(jù)類(lèi)型OUTPUT
AS
SQL語(yǔ)句
GO
參數(shù)是可選的
參數(shù)分為輸入?yún)?shù)、輸出參數(shù)
輸入?yún)?shù)允許有默認(rèn)值
這里來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的存儲(chǔ)過(guò)程

CREATE PROCEDURE UserLogin@name varchar(20),@password varchar(20)
AS
-- 定義一個(gè)臨時(shí)用來(lái)保存密碼的變量--DECLARE @strPwd NVARCHAR(20) 這里先不介紹變量。稍后的文章會(huì)詳細(xì)講到BEGINselect * from userinfo where userName=@name and userPass=@passwordENDGO
首先我們用簡(jiǎn)單的sql查詢(xún)
select * from userinfo where userName='admin'
查詢(xún)結(jié)果:
---------------------
UserName UserPass
Admin Admin

現(xiàn)在我們來(lái)執(zhí)行我們的存儲(chǔ)過(guò)程
exec UserLogin admin,admin
--或這樣調(diào)用:
EXEC UserLogin @name='admin',@password='admin'

查詢(xún)結(jié)果:
---------------------
UserName UserPass
Admin Admin

注意,在SQL SERVER中,所有用戶(hù)定義的變量都以“@”開(kāi)頭,OUTPUT關(guān)鍵字表示這個(gè)參數(shù)是用來(lái)輸出的,AS之后就是存儲(chǔ)過(guò)程內(nèi)容了。只要將以上代碼在“查詢(xún)分析器”里執(zhí)行一次,SQL SERVER就會(huì)在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)名為“UserLogin”的存儲(chǔ)過(guò)程。你可以打開(kāi)“企業(yè)管理器”,選擇當(dāng)前操作的數(shù)據(jù)庫(kù),然后在左邊的樹(shù)型列表中選擇"可編程性->存儲(chǔ)過(guò)程",此時(shí)就可以在右邊的列表中看到你剛剛創(chuàng)建的存儲(chǔ)過(guò)程了(如果沒(méi)有,刷新一下即可)。
看到了在數(shù)據(jù)中調(diào)用存儲(chǔ)過(guò)程的方法有兩種(這里EXEC與EXECUTE等效);

EXEC過(guò)程名 參數(shù)值1,參數(shù)值2,....

或者

EXEC 參數(shù)1=參數(shù)值1,參數(shù)2=參數(shù)值2....

上面我們也看到了。

創(chuàng)建這樣的存儲(chǔ)過(guò)程有什么用呢,不是只能在數(shù)據(jù)中查看賽。
我們?cè)谧鰓eb或者winform 程序,假設(shè)需要個(gè)登錄,好,我們可以調(diào)用用這個(gè)存儲(chǔ)過(guò)程來(lái)登錄,根據(jù)傳入的參數(shù),如果查詢(xún)出來(lái)有記錄,那么這條記錄在數(shù)據(jù)庫(kù)中存在,表示登錄成功,否則失敗。
這樣做的目的更加安全,可以防止sql注入。

您可能感興趣的文章:
  • 深入sql server 2005 萬(wàn)能分頁(yè)存儲(chǔ)過(guò)程的詳解
  • 基于Sql Server通用分頁(yè)存儲(chǔ)過(guò)程的解決方法
  • SQL Server 分頁(yè)查詢(xún)存儲(chǔ)過(guò)程代碼
  • SQL Server 存儲(chǔ)過(guò)程解析
  • SQL Server存儲(chǔ)過(guò)程的基礎(chǔ)說(shuō)明
  • SQL Server常用存儲(chǔ)過(guò)程及示例

標(biāo)簽:拉薩 重慶 江蘇 昭通 新鄉(xiāng) 呼和浩特 上海 貴州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server存儲(chǔ)過(guò)程入門(mén)學(xué)習(xí)》,本文關(guān)鍵詞  SQL,Server,存儲(chǔ),過(guò)程,入門(mén),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server存儲(chǔ)過(guò)程入門(mén)學(xué)習(xí)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于SQL Server存儲(chǔ)過(guò)程入門(mén)學(xué)習(xí)的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章