[點晴永久免費OA]在ASP中調用存儲過程的幾種方法
1、這也是最簡單的方法,兩個輸入參數,無返回值:
set connection = server.createobject("adodb.connection") connection.open someDSN Connection.execute "procname varvalue1, varvalue2" '將所有對象清為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 '將所有對象清為nothing,釋放資源 rs.close connection.close set rs = nothing set connection = nothing 3、以上兩種方法都不能有返回值,(Recordset除外),如果要得到返回值,需要用Command的方法。 首先說明,返回值有兩種。一種是在存儲過程中直接return一個值,就象C和VB的函數返回值那樣;另一種是可以返回多個值,存儲這些值的變量名稱需要在調用參數中先行指定。 這個例子要處理多種參數,輸入參數,輸出參數,返回記錄集以及一個直接返回值(夠全了吧?) 存儲過程如下: use pubs GO -- 建立存儲過程 create procedure sp_PubsTest -- 定義三個參數變量,注意第三個,特別標記是用于輸出 @au_lname varchar (20), @intID int, @intIDOut int OUTPUT AS select @intIDOut = @intID + 1 select * from authors where au_lname LIKE @au_lname + '%' --直接返回一個值 RETURN @intID + 2 調用該存儲過程的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 中是預定義常量,可以直接調用,但在 VBscript 中沒有預定義 adCmdSPStoredProc = 4 adParamReturnValue = 4 adParaminput = 1 adParamOutput = 2 adInteger = 3 adVarChar = 200 iVal = 5 oVal = 3 '建一個command對象 set CmdSP = Server.createObject("ADODB.Command") '建立連結 CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs" '定義command 對象調用名稱 CmdSP.CommandText = "sp_PubsTest" '設置command調用類型是存儲過程 (adCmdSPStoredProc = 4) CmdSP.CommandType = adCmdSPStoredProc '往command 對象中加參數 '定義存儲過程有直接返回值,并且是個整數,省缺值是4 CmdSP.Parameters.Append CmdSP.createParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4) '定義一個字符型輸入參數 CmdSP.Parameters.Append CmdSP.createParameter("@au_lname", adVarChar, adParaminput, 20, "M") '定義一個整型輸入參數 CmdSP.Parameters.Append CmdSP.createParameter("@intID", adInteger, adParamInput, , iVal) '定義一個整型輸出參數 CmdSP.Parameters.Append CmdSP.createParameter("@intIDOut", adInteger, adParamOutput, oVal) '運行存儲過程,并得到返回記錄集 Set adoRS = CmdSP.execute '把每個記錄打印出來,其中的字段是虛擬的,可以不用管 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 '打印兩個輸出值: 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 %> 此外還有其他方式,稍微偏門一些,以后慢慢再說,本文參考了多篇文章,這里不一一列出。 該文章在 2022/7/5 1:25:27 編輯過 |
關鍵字查詢
相關文章
正在查詢... |