Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Batch von SQL-Anweisungen ist eine Gruppe von zwei oder mehr SQL-Anweisungen oder eine einzelne SQL-Anweisung, die denselben Effekt wie eine Gruppe von zwei oder mehr SQL-Anweisungen hat. Anweisungen zur Stapelverarbeitung können die Leistung verbessern, indem der Netzwerkdatenverkehr reduziert wird und die Datenquelle die Ausführung optimieren kann.
Batchtypen
In einigen Implementierungen wird die gesamte Batch-Anweisung ausgeführt, bevor ergebnisse verfügbar sind. Dies ist oft effizienter als das separate Übermitteln von Anweisungen, da der Netzwerkdatenverkehr häufig reduziert werden kann und die Datenquelle manchmal die Ausführung einer Reihe von SQL-Anweisungen optimieren kann. In anderen Implementierungen löst das Aufrufen von SQLMoreResults die Ausführung der nächsten Anweisung im Batch aus. ODBC unterstützt die folgenden Batchtypen:
Explizite Batches Ein expliziter Batch ist zwei oder mehr SQL-Anweisungen, die durch Semikolons getrennt sind (;)). Der folgende Batch von SQL-Anweisungen öffnet z. B. einen neuen Verkaufsauftrag. Dazu müssen Zeilen in die Tabellen "Bestellungen" und "Positionen" eingefügt werden. Beachten Sie, dass nach dem letzten Anweisungssatz kein Semikolon gesetzt wird.
INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status) VALUES (2002, 1001, {fn CURDATE()}, 'Garcia', 'OPEN'); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 1, 1234, 10); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 2, 987, 8); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 3, 566, 17); INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (2002, 4, 412, 500)Verfahren Wenn eine Prozedur mehr als eine SQL-Anweisung enthält, wird sie als Batch von SQL-Anweisungen betrachtet. Mit der folgenden SQL Server-spezifischen Anweisung wird beispielsweise eine Prozedur erstellt, die ein Resultset zurückgibt, das Informationen zu einem Kunden enthält, und ein Resultset, das alle offenen Verkaufsaufträge für diesen Kunden auflistet:
CREATE PROCEDURE GetCustInfo (@CustomerID INT) AS SELECT * FROM Customers WHERE CustID = @CustomerID SELECT OrderID FROM Orders WHERE CustID = @CustomerID AND Status = 'OPEN'Die CREATE PROCEDURE-Anweisung selbst ist kein Batch von SQL-Anweisungen. Die von ihr erstellten Prozedur ist jedoch eine Reihe von SQL-Anweisungen. Keine Semikolons trennen die beiden SELECT-Anweisungen , da die CREATE PROCEDURE-Anweisung für SQL Server spezifisch ist, und SQL Server erfordert keine Semikolons, um mehrere Anweisungen in einer CREATE PROCEDURE-Anweisung zu trennen.
Arrays von Parametern - Arrays von Parametern können mit einer parametrisierten SQL-Anweisung als effiziente Methode zum Ausführen von Massenvorgängen verwendet werden. Beispielsweise können Arrays von Parametern mit der folgenden INSERT-Anweisung verwendet werden, um mehrere Zeilen in die Zeilentabelle einzufügen, während nur eine einzelne SQL-Anweisung ausgeführt wird:
INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (?, ?, ?, ?)Wenn eine Datenquelle Arrays von Parametern nicht unterstützt, kann der Treiber sie emulieren, indem die SQL-Anweisung für jede Gruppe von Parametern einmal ausgeführt wird. Weitere Informationen finden Sie unter Anweisungsparameter und Arrays von Parameterwerten im weiteren Verlauf dieses Artikels.
Die verschiedenen Arten von Batches können nicht interoperabel gemischt werden. Das heißt, wie eine Anwendung das Ergebnis der Ausführung eines expliziten Batches mit Prozeduraufrufen, eines expliziten Batches mit Arrays von Parametern und eines Prozeduraufrufs mit Arrays von Parametern bestimmt, ist treiberspezifisch.