一、創建存儲過程
CREATE PROC
存儲過程名稱
[參數列表(多個以“,”分隔)]
AS?? SQL 語句
例:
?CREATE? PROC ??upGetUserName
@intUserId? INT,
@ostrUserName NVARCHAR(20)? OUTPUT? -- 要輸出的參數
AS
BEGIN
-- 將uName的值賦給@ostrUserName 變量,即要輸出的參數
SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId
END
其中CREATE PROC 語句(完整語句為 CREATE PROCEDURE)的意思就是告訴SQL SERVER,現在需要建立一個存儲過程,upGetUserName 就是存儲過程名稱@intUserId 和@ostrUserName 分別是該存儲過程的兩個參數,注意,在SQL SERVER中,所有用戶定義的變量都以“@”開頭,OUTPUT關鍵字表示這個參數是用來輸出的,AS之后就是存儲過程內容了。只要將以上代碼在“查詢分析器”里執行一次,SQL SERVER就會在當前數據庫中創建一個名為“upGetUserName”的存儲過程。你可以打開“企業管理器”,選擇當前操作的數據庫,然后在左邊的樹型列表中選擇“存儲過程”,此時就可以在右邊的列表中看到你剛剛創建的存儲過程了(如果沒有,刷新一下即可)。
?
二、存儲過程的調用
之前我們已經創建了一個名為“upGetUserName”的存儲過程,從字面理解該存儲過程的功能是用來取得某一個用戶的名稱。存儲過程建立好了,接下來就是要在應用程序里調用了,下面看一下在ASP程序里的調用。
?Dim adoComm '// 創建一個對象,我們用來調用存儲過程
?Set adoComm = CreateObject("ADODB.Command") With adoComm '
// 設置連接,設adoConn 為已經連接的ADODB.Connection 對象?
.ActiveConnection = adoConn '
// 類型為存儲過程,adCmdStoredProc = 4
.CommandType = 4 '
// 存儲過程名稱
.CommandText = "upGetUserName"
'// 設置用戶編號
.Parameters.Item("@intUserId").Value = 1
'// 執行存儲過程
.Execute
'// 取得從存儲過程返回的用戶名稱
Response.Write "用戶名: " & .Parameters.Item("@ostrUserName").Value
End With
'// 釋放對象
Set adoComm = Nothing
?
三、存儲過程的實際應用
CREATE PROC upUserLogin
@strLoginName? NVARCHAR(20),
@strLoginPwd? NVARCHAR(20),
@blnReturn? BIT OUTPUT
AS
-- 定義一個臨時用來保存密碼的變量
DECLARE @strPwd NVARCHAR(20)
BEGIN
-- 從表中查詢當前用戶的密碼,賦值給@strPwd變量,下面要對他進行比較
SELECT @strPwd=uLoginPwd FROM uUser WHERE
uLoginName=@strLoginName
IF @strLoginPwd = @strPwd
BEGIN
? SET @blnReturn = 1
-- 更新用戶最后登錄時間
UPDATE uUser SET uLastLogin=GETDATE() WHERE
uLoginName=@strLoginName
? END
ELSE
SET @blnReturn = 0
? END
用戶登錄的存儲過程建立好了,現在在程序里試一下吧。注意,在一個區域內如果有多條語句時,必需使用BEGIN...END關鍵字。
QUOTE:
// 創建一個對象,我們用來調用存儲過程
Set adoComm = CreateObject("ADODB.Command")
With adoComm
'// 設置連接,設adoConn 為已經連接的ADODB.Connection 對象
.ActiveConnection = adoConn '
// 類型為存儲過程,adCmdStoredProc = 4
.CommandType = 4
'// 存儲過程名稱
.CommandText = "upUserLogin"
'// 設置登錄名稱
.Parameters.Item("@strLoginName").Value = "admin"
'// 設置登錄密碼
.Parameters.Item("@strLoginPwd").Value = "123456"
'// 執行存儲過程
.Execute
'// 判斷是否登錄成功
If .Parameters.Item("@blnReturn").Value = 1 Then
Response.Write "恭喜你,登錄成功!"
Else
Response.Write "不是吧,好像錯了哦。。。"
? End If
End With
'// 釋放對象
Set adoComm = Nothing
通過以上的步驟,簡單用戶登錄驗證過程也做完了,現在只要把它整合到程序中就可以實現簡單的用戶登錄驗證了,關于其他細節就由你自己來處理了。
上面介紹的兩個存儲過程都是只返回一個值的,下面我們來看一個返回一個記錄集的存儲過程。
QUOTE:
CREATE PROC upGetUserInfos
@intUserGroup? INT
AS
BEGIN
-- 從數據庫中抽取符合條件的數據
SELECT uName,uGroup,uLastLogin FROM uUser WHERE
uGroup=@intUserGroup
-- 插入一列合計
UNION
SELECT '合計人數:',COUNT(uGroup),NULL FROM uUser WHERE
uGroup=@intUserGroup
END
現在我們來看一下ASP程序的調用。
QUOTE:
Dim adoComm
Dim adoRt
'// 創建一個對象,我們用來調用存儲過程
Set adoComm = CreateObject("ADODB.Command")
Set adoRs = CreateObject("ADODB.Recordset")
With adoComm
'// 設置連接,設adoConn 為已經連接的ADODB.Connection 對象
.ActiveConnection = adoConn
'// 類型為存儲過程,adCmdStoredProc = 4
.CommandType = 4
'// 存儲過程名稱
.CommandText = "upGetUserInfos"
'// 設置用戶組
.Parameters.Item("@intUserGroup").Value = 1
'// 執行存儲過程,和以上幾個例子不同,這里使用RecordSet的Open方法
adoRs.Open adoComm
'// 顯示第一個值
Response.write adoRs.Fields(0).Value
End With
'// 釋放對象
Set adoRs = Nothing
Set adoComm = Nothing
?
?
?
?
?
?
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
