SQL SERVER 聯機叢書中的定義: 存儲過程是保存起來的可以接受和返回用戶提供的參數的 Transact-SQL 語句的集合。 可以創建一個過程供永久使用,或在一個會話中臨時使用(局部臨時過程),或在所有會話中臨時使用(全局臨時過程)。 也可以創建在 Microsoft SQL Server 啟動時自動運行的存儲過程。
CREATE PROC upGetUserName @intUserId INT, @ostrUserName NVARCHAR(20) OUTPUT -- 要輸出的參數 AS BEGIN -- 將uName的值賦給 @ostrUserName 變量,即要輸出的參數 SELECT @ostrUserName=uName FROM uUser WHERE uId=@intUserId END
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
'// 判斷是否登錄成功 If .Parameters.Item("@blnReturn").Value = 1 Then Response.Write "恭喜你,登錄成功!" Else Response.Write "不是吧,好像錯了哦。。。" End If End With '// 釋放對象 Set adoComm = Nothing
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程序的調用。
引用:
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