在ASP中調(diào)用存儲(chǔ)過(guò)程的幾種方法
2024-05-04 11:03:15
供稿:網(wǎng)友
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=sa;Pwd=;Database=Pubs"
'定義command 對(duì)象調(diào)用名稱
CmdSP.CommandText = "sp_PubsTest"
'設(shè)置command調(diào)用類(lèi)型是存儲(chǔ)過(guò)程 (adCmdSPStoredProc = 4)