日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Sql Server數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程

系統(tǒng) 2380 0

一、創(chuàng)建存儲(chǔ)過(guò)程

CREATE PROC

存儲(chǔ)過(guò)程名稱(chēng)

[參數(shù)列表(多個(gè)以“,”分隔)]

AS?? SQL 語(yǔ)句

例:

?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 語(yǔ)句(完整語(yǔ)句為 CREATE PROCEDURE)的意思就是告訴SQL SERVER,現(xiàn)在需要建立一個(gè)存儲(chǔ)過(guò)程,upGetUserName 就是存儲(chǔ)過(guò)程名稱(chēng)@intUserId 和@ostrUserName 分別是該存儲(chǔ)過(guò)程的兩個(gè)參數(shù),注意,在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è)名為“upGetUserName”的存儲(chǔ)過(guò)程。你可以打開(kāi)“企業(yè)管理器”,選擇當(dāng)前操作的數(shù)據(jù)庫(kù),然后在左邊的樹(shù)型列表中選擇“存儲(chǔ)過(guò)程”,此時(shí)就可以在右邊的列表中看到你剛剛創(chuàng)建的存儲(chǔ)過(guò)程了(如果沒(méi)有,刷新一下即可)。

?

二、存儲(chǔ)過(guò)程的調(diào)用

之前我們已經(jīng)創(chuàng)建了一個(gè)名為“upGetUserName”的存儲(chǔ)過(guò)程,從字面理解該存儲(chǔ)過(guò)程的功能是用來(lái)取得某一個(gè)用戶(hù)的名稱(chēng)。存儲(chǔ)過(guò)程建立好了,接下來(lái)就是要在應(yīng)用程序里調(diào)用了,下面看一下在ASP程序里的調(diào)用。

?Dim adoComm '// 創(chuàng)建一個(gè)對(duì)象,我們用來(lái)調(diào)用存儲(chǔ)過(guò)程

?Set adoComm = CreateObject("ADODB.Command") With adoComm '

// 設(shè)置連接,設(shè)adoConn 為已經(jīng)連接的ADODB.Connection 對(duì)象?

.ActiveConnection = adoConn '

// 類(lèi)型為存儲(chǔ)過(guò)程,adCmdStoredProc = 4

.CommandType = 4 '

// 存儲(chǔ)過(guò)程名稱(chēng)

.CommandText = "upGetUserName"

'// 設(shè)置用戶(hù)編號(hào)

.Parameters.Item("@intUserId").Value = 1

'// 執(zhí)行存儲(chǔ)過(guò)程

.Execute

'// 取得從存儲(chǔ)過(guò)程返回的用戶(hù)名稱(chēng)

Response.Write "用戶(hù)名: " & .Parameters.Item("@ostrUserName").Value

End With

'// 釋放對(duì)象

Set adoComm = Nothing

?

三、存儲(chǔ)過(guò)程的實(shí)際應(yīng)用

CREATE PROC upUserLogin
@strLoginName? NVARCHAR(20),
@strLoginPwd? NVARCHAR(20),
@blnReturn? BIT OUTPUT
AS
-- 定義一個(gè)臨時(shí)用來(lái)保存密碼的變量
DECLARE @strPwd NVARCHAR(20)
BEGIN
-- 從表中查詢(xún)當(dāng)前用戶(hù)的密碼,賦值給@strPwd變量,下面要對(duì)他進(jìn)行比較
SELECT @strPwd=uLoginPwd FROM uUser WHERE uLoginName=@strLoginName
IF @strLoginPwd = @strPwd
BEGIN
? SET @blnReturn = 1
-- 更新用戶(hù)最后登錄時(shí)間
UPDATE uUser SET uLastLogin=GETDATE() WHERE uLoginName=@strLoginName
? END
ELSE
SET @blnReturn = 0
? END
用戶(hù)登錄的存儲(chǔ)過(guò)程建立好了,現(xiàn)在在程序里試一下吧。注意,在一個(gè)區(qū)域內(nèi)如果有多條語(yǔ)句時(shí),必需使用BEGIN...END關(guān)鍵字。

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

通過(guò)以上的步驟,簡(jiǎn)單用戶(hù)登錄驗(yàn)證過(guò)程也做完了,現(xiàn)在只要把它整合到程序中就可以實(shí)現(xiàn)簡(jiǎn)單的用戶(hù)登錄驗(yàn)證了,關(guān)于其他細(xì)節(jié)就由你自己來(lái)處理了。

上面介紹的兩個(gè)存儲(chǔ)過(guò)程都是只返回一個(gè)值的,下面我們來(lái)看一個(gè)返回一個(gè)記錄集的存儲(chǔ)過(guò)程。

QUOTE:
CREATE PROC upGetUserInfos
@intUserGroup? INT
AS
BEGIN
-- 從數(shù)據(jù)庫(kù)中抽取符合條件的數(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)在我們來(lái)看一下ASP程序的調(diào)用。
QUOTE:
Dim adoComm
Dim adoRt
'// 創(chuàng)建一個(gè)對(duì)象,我們用來(lái)調(diào)用存儲(chǔ)過(guò)程
Set adoComm = CreateObject("ADODB.Command")
Set adoRs = CreateObject("ADODB.Recordset")
With adoComm
'// 設(shè)置連接,設(shè)adoConn 為已經(jīng)連接的ADODB.Connection 對(duì)象
.ActiveConnection = adoConn
'// 類(lèi)型為存儲(chǔ)過(guò)程,adCmdStoredProc = 4
.CommandType = 4
'// 存儲(chǔ)過(guò)程名稱(chēng)
.CommandText = "upGetUserInfos"
'// 設(shè)置用戶(hù)組
.Parameters.Item("@intUserGroup").Value = 1
'// 執(zhí)行存儲(chǔ)過(guò)程,和以上幾個(gè)例子不同,這里使用RecordSet的Open方法
adoRs.Open adoComm
'// 顯示第一個(gè)值
Response.write adoRs.Fields(0).Value
End With
'// 釋放對(duì)象
Set adoRs = Nothing
Set adoComm = Nothing

?

?

?

?

?

?

?

?

?

?

?

?

Sql Server數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 镇沅| 百色市| 梁平县| 赫章县| 屏边| 枣强县| 集贤县| 历史| 南充市| 靖安县| 武乡县| 横山县| 武隆县| 周口市| 白城市| 从化市| 涪陵区| 昆山市| 开平市| 邛崃市| 射洪县| 荃湾区| 泊头市| 隆回县| 泸水县| 焉耆| 青龙| 海晏县| 霸州市| 保山市| 柞水县| 太白县| 长顺县| 丰顺县| 池州市| 涡阳县| 南投市| 万年县| 凌源市| 渝中区| 登封市|