Heim >Datenbank >MySQL-Tutorial >Wie können gespeicherte Prozeduren effizient ausgeführt und Ergebnisse im klassischen ASP abgerufen werden?

Wie können gespeicherte Prozeduren effizient ausgeführt und Ergebnisse im klassischen ASP abgerufen werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-10 10:22:41375Durchsuche

How to Efficiently Execute Stored Procedures and Retrieve Results in Classical ASP?

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:

  1. 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.

  2. Befehlseigenschaften konfigurieren: Legen Sie die Eigenschaft CommandText auf den Namen der gespeicherten Prozedur und die Eigenschaft CommandType auf adCmdStoredProc fest.

  3. 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).

  4. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn