ASP中如何調(diào)用存儲(chǔ)過(guò)程
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
ASP中如何調(diào)用存儲(chǔ)過(guò)程1 這也是最簡(jiǎn)單的方法,兩個(gè)輸入?yún)?shù),無(wú)返回值:
set connection = server.createobject("adodb.connection") connection.open someDSN Connection.Execute "procname varvalue1, varvalue2" '將所有對(duì)象清為nothing,釋放資源 connection.close set connection = nothing 2 如果要返回 Recordset 集: set connection = server.createobject("adodb.connection") connection.open someDSN set rs = server.createobject("adodb.recordset") rs.Open "Exec procname varvalue1, varvalue2",connection '將所有對(duì)象清為nothing,釋放資源 rs.close connection.close set rs = nothing set connection = nothing 3 以上兩種方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。 首先說(shuō)明,返回值有兩種。一種是在存儲(chǔ)過(guò)程中直接return一個(gè)值,就象C和VB的函數(shù)返回值那樣; 另一種是可以返回多個(gè)值,存儲(chǔ)這些值的變量名稱需要在調(diào)用參數(shù)中先行指定。 這個(gè)例子要處理多種參數(shù),輸入?yún)?shù),輸出參數(shù),返回記錄集以及一個(gè)直接返回值(夠全了吧?) 存儲(chǔ)過(guò)程如下: use pubs GO -- 建立存儲(chǔ)過(guò)程 create procedure sp_PubsTest -- 定義三個(gè)參數(shù)變量,注意第三個(gè),特別標(biāo)記是用于輸出 @au_lname varchar (20), @intID int, @intIDOut int OUTPUT AS SELECT @intIDOut = @intID + 1 SELECT * FROM authors WHERE au_lname LIKE @au_lname + '%' --直接返回一個(gè)值 RETURN @intID + 2 調(diào)用該存儲(chǔ)過(guò)程的asp程序如下: <%@ Language=VBScript %> <% Dim CmdSP Dim adoRS Dim adCmdSPStoredProc Dim adParamReturnValue Dim adParaminput Dim adParamOutput Dim adInteger Dim iVal Dim oVal Dim adoField Dim adVarChar ‘這些值在 VB 中是預(yù)定義常量,可以直接調(diào)用,但在 VBScript 中沒(méi)有預(yù)定義 adCmdSPStoredProc = 4 adParamReturnValue = 4 adParaminput = 1 adParamOutput = 2 adInteger = 3 adVarChar = 200 iVal = 5 oVal = 3 '建一個(gè)command對(duì)象 set CmdSP = Server.CreateObject("ADODB.Command") '建立連結(jié) CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sawd=;Database=Pubs" '定義command 對(duì)象調(diào)用名稱 CmdSP.CommandText = "sp_PubsTest" '設(shè)置command調(diào)用類型是存儲(chǔ)過(guò)程 (adCmdSPStoredProc = 4) CmdSP.CommandType = adCmdSPStoredProc '往command 對(duì)象中加參數(shù) '定義存儲(chǔ)過(guò)程有直接返回值,并且是個(gè)整數(shù),省缺值是4 CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4) '定義一個(gè)字符型輸入?yún)?shù) CmdSP.Parameters.Append CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M") '定義一個(gè)整型輸入?yún)?shù) CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal) '定義一個(gè)整型輸出參數(shù) CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal) '運(yùn)行存儲(chǔ)過(guò)程,并得到返回記錄集 Set adoRS = CmdSP.Execute '把每個(gè)記錄打印出來(lái),其中的字段是虛擬的,可以不用管 While Not adoRS.EOF for each adoField in adoRS.Fields Response.Write adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF Next Response.Write "<br>" adoRS.MoveNext Wend '打印兩個(gè)輸出值: Response.Write "<p>@intIDOut = “ & CmdSP.Parameters("@intIDOut").Value & "</p>" Response.Write "<p>Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>" '大掃除 Set adoRS = nothing Set CmdSP.ActiveConnection = nothing Set CmdSP = nothing 該文章在 2011/4/7 11:21:06 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |