Heim >Datenbank >MySQL-Tutorial >Wie können gespeicherte Prozeduren effizient ausgeführt und Ergebnisse im klassischen ASP abgerufen werden?
Klassische ASP Stored Procedure-Ausführung und Ergebnisabruf: Best Practices
Klassische ASP-Entwickler stoßen bei der Arbeit mit gespeicherten SQL Server-Prozeduren oft auf Herausforderungen, insbesondere beim Ergebnisabruf. Leere Antworten oder geschlossene Recordsets sind häufige Probleme, selbst wenn die Prozedur Daten zurückgeben soll. Dies liegt häufig daran, dass wichtige SQL Server-Einstellungen übersehen werden und die Datenverarbeitung innerhalb des ASP-Codes ineffizient ist.
Eine häufige Ursache für leere Ergebnisse ist die Nichtverwendung von SET NOCOUNT ON
in der gespeicherten Prozedur. Standardmäßig gibt SQL Server die Anzahl der betroffenen Zeilen zurück, was die tatsächliche Ergebnismenge beeinträchtigen kann. SET NOCOUNT ON
stellt sicher, dass nur die Daten zurückgegeben werden.
Ein weiterer Leistungsengpass ist die Iteration durch Daten mit ADODB.Recordset
. Dieser Ansatz kann langsam sein. Eine effizientere Methode besteht darin, die gesamte Ergebnismenge zur späteren Verarbeitung in ein Array abzurufen.
Optimierter Ansatz für die klassische Handhabung gespeicherter ASP-Prozeduren:
Die folgenden Schritte beschreiben eine optimierte Methode zum Ausführen gespeicherter Prozeduren und zum Abrufen von Daten in Classic ASP:
Instanziieren ADODB.Command
: Erstellen Sie ein ADODB.Command
-Objekt und stellen Sie eine Verbindung mithilfe einer gültigen Verbindungszeichenfolge oder eines ADODB.Connection
-Objekts her.
Befehlseigenschaften konfigurieren: Legen Sie die Eigenschaft CommandText
auf den Namen der gespeicherten Prozedur und die Eigenschaft CommandType
auf adCmdStoredProc
fest.
Parameter verwalten: Wenn die gespeicherte Prozedur Parameter akzeptiert, verwenden Sie die Parameters
-Sammlung, um sie hinzuzufügen, und geben Sie dabei Datentyp und -richtung an (z. B. adParamInput
).
Daten ausführen und abrufen: Führen Sie den Befehl mit der Methode Execute
aus. Anstatt das Recordset direkt zu verarbeiten, verwenden Sie die Methode GetRows
, um den gesamten Ergebnissatz effizient in ein zweidimensionales Array zu laden.
Überarbeitetes Codebeispiel:
Hier ist ein verfeinertes Codebeispiel, das diese Verbesserungen demonstriert:
<code class="language-vbscript">Const adParamInput = 1, adVarChar = 200 Dim conn_string, row, rows, ary_data conn_string = "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;" Set objCommandSec = CreateObject("ADODB.Command") With objCommandSec .ActiveConnection = conn_string .CommandType = adCmdStoredProc .CommandText = "usp_Targets_DataEntry_Display" .Parameters.Append .CreateParameter("@userinumber", adVarChar, adParamInput, 10, inumber) .Parameters.Append .CreateParameter("@group", adVarChar, adParamInput, 50, "ISM") .Parameters.Append .CreateParameter("@groupvalue", adVarChar, adParamInput, 50, ismID) .Parameters.Append .CreateParameter("@targettypeparam", adVarChar, adParamInput, 50, targetType) Set rs = .Execute() If Not rs.EOF Then ary_data = rs.GetRows() rs.Close() Set rs = Nothing End If End With Set objCommandSec = Nothing ' Process data from the array If IsArray(ary_data) Then rows = UBound(ary_data, 2) For row = 0 To rows Response.Write(ary_data(1, row) & "<br>") ' Example: Accessing the second column (index 1) Next Else Response.Write("No data returned") End If</code>
Dieser überarbeitete Code ruft Daten effizient in ein Array ab und vermeidet den Leistungsaufwand der Recordset-Iteration, was zu einer schnelleren und zuverlässigeren Ausführung gespeicherter Prozeduren in klassischem ASP führt. Denken Sie daran, potenzielle Fehler in einer Produktionsumgebung angemessen zu behandeln.
Das obige ist der detaillierte Inhalt vonWie können gespeicherte Prozeduren effizient ausgeführt und Ergebnisse im klassischen ASP abgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!