亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

SQL SERVER數(shù)據(jù)庫開發(fā)之存儲(chǔ)過程應(yīng)用

添加時(shí)間:2013-2-4 14:08:47  添加: 思海網(wǎng)絡(luò) 

  可能有不少朋友使用SQL SERVER做開發(fā)也已經(jīng)有段日子,但還沒有或者很少在項(xiàng)目中使用存儲(chǔ)過程,或許有些朋友認(rèn)為根本沒有必要使用存儲(chǔ)過程等等。其實(shí)當(dāng)你一個(gè)項(xiàng)目做完到了維護(hù)階段時(shí),就會(huì)發(fā)現(xiàn)存儲(chǔ)過程給我們帶來了好處了,修改方便,不能去改我們的應(yīng)用程序,只需要改存儲(chǔ)過程的內(nèi)容,而且還可以使我們的程序速度得到提高。

  引用:
SQL SERVER 聯(lián)機(jī)叢書中的定義:
  存儲(chǔ)過程是保存起來的可以接受和返回用戶提供的參數(shù)的 Transact-SQL 語句的集合。
  可以創(chuàng)建一個(gè)過程供永久使用,或在一個(gè)會(huì)話中臨時(shí)使用(局部臨時(shí)過程),或在所有會(huì)話中臨時(shí)使用(全局臨時(shí)過程)。
  也可以創(chuàng)建在 Microsoft SQL Server 啟動(dòng)時(shí)自動(dòng)運(yùn)行的存儲(chǔ)過程。 
 


  要使用存儲(chǔ)過程,首先我們必需熟悉一些基本的T-SQL語句,因?yàn)榇鎯?chǔ)過程是由于一組T-SQL語句構(gòu)成的,并且,我們需要了解一些關(guān)于函數(shù)、過程的概念,因?yàn)槲覀冃枰趹?yīng)用程序中調(diào)用存儲(chǔ)過程,就像我們調(diào)用應(yīng)用程序的函數(shù)一樣,不過調(diào)用的方法有些不同。
  下面我們來看一下存儲(chǔ)過程的建立和使用方法。
一、創(chuàng)建存儲(chǔ)過程
  和數(shù)據(jù)表一樣,在使用之前我們需要?jiǎng)?chuàng)建存儲(chǔ)過程,它的簡(jiǎn)明語法是:

  引用:
CREATE PROC 存儲(chǔ)過程名稱
    [參數(shù)列表(多個(gè)以“,”分隔)]
AS
SQL 語句
 


例:

  引用:
CREATE PROC upGetUserName
@intUserId        INT,
@ostrUserName NVARCHAR(20) OUTPUT                -- 要輸出的參數(shù)
AS
BEGIN
        -- 將uName的值賦給 @ostrUserName 變量,即要輸出的參數(shù)
        SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId
END
 


  其中 CREATE PROC 語句(完整語句為CREATE PROCEDURE)的意思就是告訴SQL SERVER,現(xiàn)在需要建立一個(gè)存儲(chǔ)過程,upGetUserName 就是存儲(chǔ)過程名稱,@intUserId 和 @ostrUserName 分別是該存儲(chǔ)過程的兩個(gè)參數(shù),注意,在SQL SERVER中,所有用戶定義的變量都以“@”開頭,OUTPUT關(guān)鍵字表示這個(gè)參數(shù)是用來輸出的,AS之后就是存儲(chǔ)過程內(nèi)容了。只要將以上代碼在“查詢分析器”里執(zhí)行一次,SQL SERVER就會(huì)在當(dāng)前數(shù)據(jù)庫中創(chuàng)建一個(gè)名為“upGetUserName”的存儲(chǔ)過程。你可以打開“企業(yè)管理器”,選擇當(dāng)前操作的數(shù)據(jù)庫,然后在左邊的樹型列表中選擇“存儲(chǔ)過程”,此時(shí)就可以在右邊的列表中看到你剛剛創(chuàng)建的存儲(chǔ)過程了(如果沒有,刷新一下即可)。
二、存儲(chǔ)過程的調(diào)用
  之前我們已經(jīng)創(chuàng)建了一個(gè)名為“upGetUserName”的存儲(chǔ)過程,從字面理解該存儲(chǔ)過程的功能是用來取得某一個(gè)用戶的名稱。存儲(chǔ)過程建立好了,接下來就是要在應(yīng)用程序里調(diào)用了,下面看一下在ASP程序里的調(diào)用。

  引用:
Dim adoComm
'// 創(chuàng)建一個(gè)對(duì)象,我們用來調(diào)用存儲(chǔ)過程
Set adoComm = CreateObject("ADODB.Command")
With adoComm
        '// 設(shè)置連接,設(shè) adoConn 為已經(jīng)連接的 ADODB.Connection 對(duì)象
        .ActiveConnection = adoConn
        '// 類型為存儲(chǔ)過程,adCmdStoredProc = 4
        .CommandType = 4
        '// 存儲(chǔ)過程名稱
        .CommandText = "upGetUserName"
        '// 設(shè)置用戶編號(hào)
        .Parameters.Item("@intUserId").Value = 1
        '// 執(zhí)行存儲(chǔ)過程
        .Execute
        '// 取得從存儲(chǔ)過程返回的用戶名稱
        Response.Write "用戶名:" & .Parameters.Item("@ostrUserName").Value
End With
'// 釋放對(duì)象
Set adoComm = Nothing
 


  通過以上兩步,我們已經(jīng)可以創(chuàng)建和使用簡(jiǎn)單的存儲(chǔ)過程了。下面我們來看一個(gè)稍微復(fù)雜點(diǎn)的存儲(chǔ)過程,以進(jìn)一步了解存儲(chǔ)過程的應(yīng)用。
三、存儲(chǔ)過程的實(shí)際應(yīng)用
  用戶登錄在ASP項(xiàng)目中經(jīng)常會(huì)使用到,相信很多朋友也都做過類似的系統(tǒng),但使用存儲(chǔ)過程來做驗(yàn)證朋友可能不多,那么我們就以它來做例子,寫一個(gè)簡(jiǎn)單的用戶登錄驗(yàn)證的存儲(chǔ)過程。

  引用:
CREATE PROC upUserLogin
@strLoginName        NVARCHAR(20),
@strLoginPwd        NVARCHAR(20),
@blnReturn                BIT OUTPUT
AS
-- 定義一個(gè)臨時(shí)用來保存密碼的變量
DECLARE @strPwd NVARCHAR(20)
BEGIN
        -- 從表中查詢當(dāng)前用戶的密碼,賦值給 @strPwd 變量,下面要對(duì)他進(jìn)行比較
        SELECT @strPwd=uLoginPwd FROM uUser WHERE uLoginName=@strLoginName
        IF @strLoginPwd = @strPwd
                BEGIN
                        SET @blnReturn = 1
                        -- 更新用戶最后登錄時(shí)間
                        UPDATE uUser SET uLastLogin=GETDATE() WHERE uLoginName=@strLoginName
                END
        ELSE
                SET @blnReturn = 0
END
 


  用戶登錄的存儲(chǔ)過程建立好了,現(xiàn)在在程序里試一下吧。注意,在一個(gè)區(qū)域內(nèi)如果有多條語句時(shí),必需使用BEGIN...END關(guān)鍵字。

  引用:
Dim adoComm
'// 創(chuàng)建一個(gè)對(duì)象,我們用來調(diào)用存儲(chǔ)過程
Set adoComm = CreateObject("ADODB.Command")
With adoComm
        '// 設(shè)置連接,設(shè) adoConn 為已經(jīng)連接的 ADODB.Connection 對(duì)象
        .ActiveConnection = adoConn
        '// 類型為存儲(chǔ)過程,adCmdStoredProc = 4
        .CommandType = 4
        '// 存儲(chǔ)過程名稱
        .CommandText = "upUserLogin"
        '// 設(shè)置登錄名稱
        .Parameters.Item("@strLoginName").Value = "admin"
        '// 設(shè)置登錄密碼
        .Parameters.Item("@strLoginPwd").Value = "123456"
        '// 執(zhí)行存儲(chǔ)過程
        .Execute
        '// 判斷是否登錄成功
        If .Parameters.Item("@blnReturn").Value = 1 Then
                Response.Write "恭喜你,登錄成功!"
        Else
                Response.Write "不是吧,好像錯(cuò)了哦。。。"
        End If
End With
'// 釋放對(duì)象
Set adoComm = Nothing
 


  通過以上的步驟,簡(jiǎn)單用戶登錄驗(yàn)證過程也做完了,現(xiàn)在只要把它整合到程序中就可以實(shí)現(xiàn)簡(jiǎn)單的用戶登錄驗(yàn)證了,關(guān)于其他細(xì)節(jié)就由你自己來處理了。
  上面介紹的兩個(gè)存儲(chǔ)過程都是只返回一個(gè)值的,下面我們來看一個(gè)返回一個(gè)記錄集的存儲(chǔ)過程。

  引用:
CREATE PROC upGetUserInfos
@intUserGroup        INT
AS
BEGIN
        -- 從數(shù)據(jù)庫中抽取符合條件的數(shù)據(jù)
        SELECT uName,uGroup,uLastLogin FROM uUser WHERE uGroup=@intUserGroup
        -- 插入一列合計(jì)
        UNION
        SELECT '合計(jì)人數(shù):',COUNT(uGroup),NULL FROM uUser WHERE uGroup=@intUserGroup
END
 


  現(xiàn)在我們來看一下ASP程序的調(diào)用。

  引用:
Dim adoComm
Dim adoRt
'// 創(chuàng)建一個(gè)對(duì)象,我們用來調(diào)用存儲(chǔ)過程
Set adoComm = CreateObject("ADODB.Command")
Set adoRs = CreateObject("ADODB.Recordset")
With adoComm
        '// 設(shè)置連接,設(shè) adoConn 為已經(jīng)連接的 ADODB.Connection 對(duì)象
        .ActiveConnection = adoConn
        '// 類型為存儲(chǔ)過程,adCmdStoredProc = 4
        .CommandType = 4
        '// 存儲(chǔ)過程名稱
        .CommandText = "upGetUserInfos"
        '// 設(shè)置用戶組
        .Parameters.Item("@intUserGroup").Value = 1
        '// 執(zhí)行存儲(chǔ)過程,和以上幾個(gè)例子不同,這里使用RecordSet的Open方法
        adoRs.Open adoComm
        '// 顯示第一個(gè)值
        Response.write adoRs.Fields(0).Value
End With
'// 釋放對(duì)象
Set adoRs = Nothing
Set adoComm = Nothing
 


  怎么樣,是不是也很簡(jiǎn)單呢,不過存儲(chǔ)過程的用處不僅僅只有這些,他還有更強(qiáng)大的功能,比如使用游標(biāo)、臨時(shí)表來從多個(gè)表,甚至是多個(gè)數(shù)據(jù)庫中調(diào)用數(shù)據(jù),然后返回給用戶,這些你可以在使用過程中慢慢的去發(fā)掘。
關(guān)鍵字:數(shù)據(jù)庫、SQL SERVER、存儲(chǔ)過程

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開網(wǎng)站