Empfohlen: ASP 3.0 Erweiterte Programmierung (zwölf) 4.2.3 Beispiele für serverseitige Anweisungen In diesem Abschnitt werden einige Beispielseiten enthält, mit denen es mit verschiedenen serverseitigen Anweisungen experimentieren kann. Öffnen Sie das Unterverzeichnis der Beispiel -Webseite Kapitel 04, wobei die SSI -Direktiven und das ASP Server -Objekt & RDQUE angezeigt werden
9.2.3 gespeicherte VerfahrenDie Verwendung gespeicherter Prozeduren ist ein Bereich, in dem Befehlsobjekte angewendet werden. Speichernde Verfahren (manchmal auch Speicherabfragen genannt) sind SQL -Abfrageanweisungen, die in einer Datenbank vordefiniert sind.
Warum sollten Sie gespeicherte Prozeduren erstellen und verwenden, anstatt SQL -Zeichenfolgen direkt in Ihrem Code zu verwenden? Es gibt mehrere Hauptgründe:
· Speichernde Verfahren wurden von der Datenbank zusammengestellt. Dies führt zu einem Ausführungsplan, sodass die Datenbank genau weiß, was sie tun wird, um die Ausführung des Prozesses zu beschleunigen.
Speichernde Verfahren werden normalerweise von der Datenbank zwischengespeichert, wodurch sie schneller laufen, da sie zu diesem Zeitpunkt nicht von der Festplatte gelesen werden müssen. Nicht alle Datenbanken unterstützen diesen Caching -Mechanismus. Zum Beispiel unterstützt der Zugriff von Microsoft ihn nicht, aber SQL Server unterstützt ihn.
· Durch Angeben, dass Tabellen in der Datenbank nur durch gespeicherte Prozeduren geändert werden können, können die Daten sicherer sind. Dies bedeutet, dass möglicherweise gefährliche SQL -Operationen nicht durchgeführt werden.
· Der ASP -Code kann vermieden werden, zusammen mit langwierigen SQL -Anweisungen zu mischen, wodurch der ASP -Code leichter gewartet wird.
· Alle SQL -Code können zentral auf dem Server gespeichert werden.
· Die Ausgabeparameter können in gespeicherten Prozeduren verwendet werden, um die Rückgabe des Datensatzsatzes oder anderer Werte zu ermöglichen.
Im Allgemeinen sind gespeicherte Verfahren fast immer schneller als vergleichbare SQL -Anweisungen.
Um gespeicherte Prozeduren zu verwenden, verwenden Sie einfach den Namen des gespeicherten Prozedur als Befehlstext und legen Sie den entsprechenden Typ fest. Betrachten Sie beispielsweise das vorherige Beispiel eines aktualisierten Buchpreises. Wenn Sie eine gespeicherte Prozedur auf SQL Server erstellen, können Sie Code schreiben:
Erstellen Sie die Prozedur USP_UPDATEPRICES
ALS
Titel aktualisieren
Setzen Sie Preis = Preis * 1.10
Wobei type = 'business'
Für die Zugriffsdatenbank von Microsoft kann dieselbe Aufgabe mithilfe einer einfachen Update -Abfrageanweisung erledigt werden
Verwenden Sie einfach den folgenden Code, um diese gespeicherte Prozedur auf einer ASP -Webseite auszuführen:
Setzen Sie cmDUpDate = server.createObject (adodb.command)
CMDUPDATE.ACTIVECONNECTION = strconn
CMDUPDATE.CommandText = USP_UPDATEPRICES
CMDUPDATE.CommandType = ADCMDStoredProc
cmdupdate.execute, ateExecutenorecords
Dies wird nur ein gespeichertes Verfahren ausführen. Kein Datensatzsatz kehrt zurück, da die Daten gerade aktualisiert werden. Es ist wichtig, sich daran zu erinnern, dass Sie keine Datensätze erstellen, es sei denn, Sie benötigen sie wirklich.
Obwohl dies in Ordnung ist, ist es nicht sehr flexibel, da es sich nur mit einer Art von Buch befasst. Ein besserer Ansatz ist es, einen Prozess zu erstellen, der es uns ermöglicht, einen Buchtyp zu wählen, damit wir keinen Prozess für jeden Buchentyp erstellen müssen. Außerdem kann das feste 10% ige Update entfernt werden, was zu einer besseren Flexibilität führt. Wie kann ich das tun? Es ist sehr einfach, verwenden Parameter.
1. Parameter
Die Parameter (oder Variablen) der gespeicherten Prozeduren entsprechen den allgemeinen Verfahren und Funktionen. Sie können in die Funktion übergeben werden, und die Funktion kann dann ihren Wert verwenden. Speicherte Prozeduren in SQL Server (dasselbe gilt für andere Datenbanken, einschließlich Zugriff) haben diese Funktion.
Damit gespeicherte Prozeduren mehrere Arten von Büchern verarbeiten und dass Benutzer sogar eine Erhöhung (oder eine Rücknahme) der Preise angeben können, müssen einige Parameter hinzugefügt werden:
Erstellen Sie die Prozedur USP_UPDATEPRICES
@Type char (12),
@Prozent Geld
ALS
Titel aktualisieren
Setzen Sie Preis = Preis * (1 @percent / 100)
Wobei type = @type
Die gespeicherte Prozedur USP_UPDATEPRICES nimmt nun zwei Parameter an:
· Eine ist die Art von Buch (@Type).
· Einer ist der Prozentsatz der Buchänderungen des Buchpreises (@percent).
Wie bei den Funktionen von VBScript sind diese Parameter Variablen. Im Gegensatz zu VBScript- und anderen Skriptsprachen sind die Variablen in diesen Skriptsprachen jedoch alle variablen Typen, während SQL -Variablen bestimmte Typen (char, Geld usw.) haben. Die Benennungsspezifikation von SQL -Variablen muss befolgt werden, dh die Variable muss mit dem Symbol @beginnen.
Beachten Sie, dass wir Prozentsätze als Ganzzahl (z. B. 10%10%) anstatt als Bruchwert in diesen Prozess übergeben haben. Dies macht gespeicherte Verfahren nur etwas intuitiver.
2. Parameter Sammlung
Jetzt gibt es also eine gespeicherte Prozedur mit Parametern, aber wie rufen Sie sie über ADO an? Wir haben gesehen, wie man gespeicherte Prozeduren ohne Parameter mit Befehlsobjekten aufruft, und tatsächlich gibt es keinen Unterschied zwischen ihnen. Der Unterschied ist die Verwendung von Parametersammlungen.
Die Parametersammlung enthält Parameterobjekte für jeden Parameter in der gespeicherten Prozedur. ADO weiß jedoch nicht automatisch, was diese Parameter sind, daher müssen sie mit der CreateParameter -Methode in der folgenden Form erstellt werden:
Setzen Sie Parameter = Befehl.CreateParameter (Name, [Typ], [Richtung], [Größe], [Wert])
Die Parameter und Beschreibungen sind in Tabelle 9-3 angezeigt:
Tabelle 9-3 Parameter und Beschreibungen der CreateParameter-Methode
Parameter
veranschaulichen
Name
Parametername. Dies ist der Parametername in der Parametersammlung, nicht der Parametername in der gespeicherten Prozedur. Die Verwendung des gleichen Namens ist jedoch eine gute Praxis
Typ
Der Datentyp des Parameters. Es kann eine Addatatyp -Konstante sein. Weitere Informationen finden Sie im Anhang
Richtung
Die Richtung des Parameters gibt an, ob der Parameter Informationen zum gespeicherten Prozedur liefert oder die gespeicherte Prozedur Informationen an die ADO zurückgibt. Es kann einer der folgenden Werte sein:
ADPARAMINPUT, der Parameter ist der Eingangsparameter, der an die gespeicherte Prozedur übergeben wurde
ADPARAMOUTPUT, der Parameter ist der Ausgangsparameter aus der gespeicherten Prozedur
ADPARAMINPUTOUTPUT, die Parameter können sowohl als Eingangs- als auch als Ausgangsparameter verwendet werden
ADPARAMRETURNVALUE enthält diesen Parameter den Status, der durch die gespeicherte Prozedur zurückgegeben wird
Größe
Parameterlänge. Für Typ mit fester Länge wie Ganzzahlen kann dieser Wert ignoriert werden
Wert
Wert des Parameters
Sobald der Parameter erstellt wurde, kann er beispielsweise an die Parametersammlung angehängt werden:
Setzen Sie parValue = cmDupdate.CreateParameter (@Type, Advarwchar, Adparaminput, _
12, Geschäft)
CMDUPDATE.PARAMETERS.APPEND PARVALUE
Setzen Sie parValue = cmDupdate.CreateParameter (@percent, Adcurrency, _
Adparaminput,, 10)
CMDUPDATE.PARAMETERS.APPEND PARVALUE
Es ist nicht erforderlich, ein Objekt explizit zu erstellen, um Parameter zu speichern. Der Standardvariantenstyp kann bereits recht gut funktionieren. Wenn Sie keine Variable erstellen möchten, können Sie auch Verknüpfungen einnehmen, z. B. den folgenden Code:
CMDUPDATE.PARAMETERS.Append = _
CMDUPDATE.CreateParameter (@percent, Adcurrency, Adparaminput, 10)
Dadurch wird die CreateParameter -Methode verwendet, um ein Parameterobjekt zurückzugeben, und empfängt es mit der Anhangsmethode. Diese Methode läuft schneller als die Verwendung von Variablen, verlängert jedoch die Codezeile, wodurch er weniger lesbar ist. Sie können eine dieser Methoden nach Ihren Hobbys auswählen.
Nachdem die Parameter zur Erfassung der Parameter hinzugefügt wurden, werden sie darin beibehalten, sodass jeder Parameter beim Erstellen des Parameters nicht unbedingt einen Wert zugewiesen wird. Der Wert des Parameters kann jederzeit festgelegt werden, bevor der Befehl ausgeführt wird. Zum Beispiel:
CMDUPDATE.PARAMETERS.Append = _
CMDUPDATE.CreateParameter (@percent, Adcurrency, Adparaminput)
CMDUPDATE.PARAMETERS (@percent) = 10
In dem vorherigen Kapitel wurde erwähnt, dass es verschiedene Möglichkeiten gibt, in einer Sammlung auf Werte zuzugreifen, und die Parametersammlung ist nicht anders. Das obige Beispiel verwendet den Namen des Parameters, um Parameter im Satz abzurufen, oder kann auch mit Indexnummern durchsucht werden:
CMDUPDATE.PARAMETERS (0) = 10
Der obige Code weist den ersten Parameter im Parametersatz zu (die Parameter festgelegt von 0).
Teilen: Verwandte Wissen über erweiterte ASP -Fehlerobjekte für die ASP -Anwendung In VBScript gibt es eine OnerrorresumNext -Anweisung, die dazu führt, dass der Skript -Interpreter Laufzeitfehler ignoriert und die Ausführung des Skriptcodes fortsetzt. Anschließend kann das Skript den Wert der ERR.Number -Eigenschaft überprüfen, um festzustellen, ob ein Fehler aufgetreten ist. Wenn ein Fehler auftritt, wird ein Wert ungleich Null zurückgegeben