Mehrere Möglichkeiten für ASP, gespeicherte Prozeduren mit Parametern aufzurufen.
Kürzlich haben viele Freunde nach dem Aufruf gespeicherter Prozeduren gefragt. Hier finden Sie eine kurze Einführung in verschiedene Möglichkeiten für ASP, gespeicherte Prozeduren mit Parametern aufzurufen.
1. Dies ist auch die einfachste Methode mit zwei Eingabeparametern und keinem Rückgabewert:
set Connection = server.createobject("adodb.connection")
Verbindung.Öffnen Sie einen DSN
Connection.Execute "procname varvalue1, varvalue2"
'Alle Objekte löschen und Ressourcen freigeben
Verbindung schließen
setze Verbindung=nichts
2. Wenn Sie den Recordset-Satz zurückgeben möchten:
set Connection = server.createobject("adodb.connection")
Verbindung.Öffnen Sie einen DSN
set rs = server.createobject("adodb.recordset")
rs.Open „Exec procname varvalue1, varvalue2“,connection
'Alle Objekte löschen und Ressourcen freigeben
rs.close
Verbindung schließen
setrs=nichts
setze Verbindung=nichts
3. Keine der beiden oben genannten Methoden kann einen Rückgabewert haben (außer Recordset). Wenn Sie den Rückgabewert erhalten möchten, müssen Sie die Command-Methode verwenden.
Zunächst einmal gibt es zwei Arten von Rückgabewerten. Eine besteht darin, einen Wert direkt in der gespeicherten Prozedur zurückzugeben, genau wie der Funktionsrückgabewert von C und VB. Die andere besteht darin, mehrere Werte zurückzugeben, und die Variablennamen zum Speichern dieser Werte müssen zuerst in den aufrufenden Parametern angegeben werden .
Dieses Beispiel muss mehrere Parameter, Eingabeparameter, Ausgabeparameter, Rückgabedatensätze und einen direkten Rückgabewert verarbeiten (ist es vollständig genug?)
Die gespeicherte Prozedur lautet wie folgt:
Pubs verwenden
GO
– Erstellen Sie eine gespeicherte Prozedur
Erstellen Sie die Prozedur sp_PubsTest
– definieren Sie drei Parametervariablen, achten Sie auf die dritte, die spezielle Markierung ist für die Ausgabe
@au_lname varchar (20),
@intID int,
@intIDOut int OUTPUT
AS
SELECT @intIDOut = @intID + 1
SELECT *
VON Autoren
WHERE au_lname LIKE @au_lname + '%'
– Gibt einen Wert direkt zurück
RETURN @intID + 2
Das ASP-Programm, das diese gespeicherte Prozedur aufruft, lautet wie folgt:
<%@ Language=VBScript %>
<%
CmdSP dimmen
DimadoRS
Dimmen Sie adCmdSPStoredProc
Dimmen Sie adParamReturnValue
AdParamin-Eingabe dimmen
Dimmen Sie adParamOutput
AdInteger dimmen
iVal dimmen
Schwaches Oval
Schwaches adoField
Dim adVarChar
'Diese Werte sind in VB vordefinierte Konstanten und können direkt aufgerufen werden, sie sind jedoch in VBScript nicht vordefiniert
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
adInteger = 3
adVarChar = 200
iVal = 5
oVal = 3
'Ein Befehlsobjekt erstellen
set CmdSP = Server.CreateObject("ADODB.Command")
'Link erstellen
CmdSP.ActiveConnection = "Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs"
'Namen des Befehlsobjektaufrufs definieren
CmdSP.CommandText = "sp_PubsTest"
'Legen Sie den Befehlsaufruftyp auf eine gespeicherte Prozedur fest (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc
'Parameter zum Befehlsobjekt hinzufügen
„Definieren Sie die gespeicherte Prozedur so, dass sie einen direkten Rückgabewert hat. Der Standardwert ist 4.“
CmdSP.Parameters.Append CmdSP.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue, 4)
'Definieren Sie einen Zeicheneingabeparameter
CmdSP.Parameters.Append CmdSP.CreateParameter("@au_lname", adVarChar, adParaminput, 20, "M")
'Definieren Sie einen ganzzahligen Eingabeparameter
CmdSP.Parameters.Append CmdSP.CreateParameter("@intID", adInteger, adParamInput, , iVal)
'Definieren Sie einen ganzzahligen Ausgabeparameter
CmdSP.Parameters.Append CmdSP.CreateParameter("@intIDOut", adInteger, adParamOutput, oVal)
'Führen Sie die gespeicherte Prozedur aus und rufen Sie den zurückgegebenen Datensatz ab
Legen Sie adoRS = CmdSP.Execute fest
'Jeden Datensatz ausdrucken. Die Felder sind virtuell und können ignoriert werden.
Während nicht adoRS.EOF
für jedes adoField in adoRS.Fields
Response.Write adoField.Name & "=" & adoField.Value & "<br>" & vbCRLF
Nächste
Response.Write „<br>“
adoRS.MoveNext
Wend
'Drucken Sie zwei Ausgabewerte:
Response.Write "<p>@intIDOut = " & CmdSP.Parameters("@intIDOut").Value & "</p>"
Response.Write "<p>Return value = " & CmdSP.Parameters("RETURN_VALUE").Value & "</p>"
„Allgemeine Reinigung
Setze adoRS = nichts
Setzen Sie CmdSP.ActiveConnection = nichts
Setzen Sie CmdSP = nichts
%>
-------------------------------------------------- -------------------------------------------------- --------------------------------
Der Aufruf der gespeicherten Prozedur des SQL Servers in ASP kann die Ausführungsgeschwindigkeit des Programms beschleunigen
1. Rufen Sie den Speicher auf. Die allgemeine Methode des Prozesses geht davon aus, dass im SQL Server eine gespeicherte Prozedur dt_users vorhanden ist:
PROZEDUR ERSTELLEN [dbo].[dt_users]
ALS
Wählen Sie * aus den Benutzern aus
zurückkehren
GEHEN
Die erste Methode besteht darin, nicht das Befehlsobjekt, sondern direkt das Recordset-Objekt zu verwenden.
set rs=server.createobject("adodb.recordset")
sql="exec dt_users"
rs.open sql,conn,1,1, sodass die zweite Methode darin besteht, das Befehlsobjekt zu verwenden
set comm=server.createobject("adodb.command")
comm.commantype=4
setze comm.activeconnection=conn
comm.commandtext="dbo.dt_users"
set rs=server.createobject("adodb.recordset")
rs.open comm,,1,1
2. Übergeben Sie Parameter an die gespeicherte Prozedur. Wenn die gespeicherte Prozedur keine Parameter, sondern nur eine einzelne SQL-Anweisung enthält, wird der Vorteil des Aufrufs der gespeicherten Prozedur nicht angezeigt!
Bei einer BBS-Abfrage können Sie beispielsweise nach Autor und Thema abfragen! Dann können Sie eine gespeicherte Prozedur wie folgt erstellen:
Der Parameter Schlüsselwort ist das Schlüsselwort, und wählen ist die Methode zum Auswählen der Abfrage.
PROZEDUR ERSTELLEN [dbo].[dt_bbs]
@keyword varchar(20)=null,
@choose int=null
als
wenn @choose=1
Wählen Sie * aus BBS aus, wobei der Name @keyword ist
anders
Wählen Sie * aus BBS mit Betreff wie @keyword aus
zurückkehren
gehen
Auf diese Weise müssen wir beim Aufrufen der gespeicherten Prozedur nur die Parameter übergeben, anstatt ein Programm in ASP zu schreiben und die erste Methode zu verwenden:
set rs=server.createobject("adodb.recordset")
sql="exec dt_bbs '"&keyword&"',"&choose&""
rs.open sql,conn,1,1
Verwenden Sie die zweite Methode:
set comm=server.createobject("adodb.command")
comm.commantype=4
comm.Parameters.append comm.CreateParameter("@keyword",adChar,adParamInput,50,keyword)
comm.Parameters.append comm.CreateParameter("@keyword",adInteger,adParamInput,,choose)
setze comm.activeconnection=conn
comm.commandtext="dbo.dt_bbs"
set rs=server.createobject("adodb.recordset")
rs.CursorType=3
rs.open comm,,1,1