Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
En batch med SQL-instruktioner är en grupp med två eller flera SQL-instruktioner eller en enda SQL-instruktion som har samma effekt som en grupp med två eller flera SQL-uttryck. Batchinstruktioner kan förbättra prestanda genom att minska nätverkstrafiken och tillåta att datakällan optimerar körningen.
Typer av batchar
I vissa implementeringar körs hela batch-instruktionen innan några resultat blir tillgängliga. Detta är ofta effektivare än att skicka instruktioner separat, eftersom nätverkstrafiken ofta kan minskas och datakällan ibland kan optimera körningen av en batch SQL-instruktioner. I andra implementeringar utlöser anrop av SQLMoreResults körningen av nästa -instruktion i batchen. ODBC stöder följande typer av batchar:
Explicita batchar En explicit batch är två eller flera SQL-uttryck avgränsade med semikolon (;). Följande batch med SQL-instruktioner öppnar till exempel en ny försäljningsorder. Detta kräver att rader infogas i tabellerna Order och Lines. Observera att det inte finns något semikolon efter den sista satsen.
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)Förfaranden Om en procedur innehåller mer än en SQL-instruktion anses den vara en batch med SQL-instruktioner. Följande SQL Server-specifika instruktion skapar till exempel en procedur som returnerar en resultatuppsättning som innehåller information om en kund och en resultatuppsättning som visar alla öppna försäljningsorder för kunden:
CREATE PROCEDURE GetCustInfo (@CustomerID INT) AS SELECT * FROM Customers WHERE CustID = @CustomerID SELECT OrderID FROM Orders WHERE CustID = @CustomerID AND Status = 'OPEN'SJÄLVA CREATE PROCEDURE-instruktionen är inte en batch med SQL-instruktioner. Den procedur som skapas är dock en batch med SQL-instruktioner. Inga semikolon separerar de två SELECT-uttrycken eftersom CREATE PROCEDURE-instruktionen är specifik för SQL Server, och SQL Server kräver inte semikolon för att separera flera instruktioner i en CREATE PROCEDURE-instruktion .
Matriser med parametrar – Matriser med parametrar kan användas med en parameteriserad SQL-instruktion som ett effektivt sätt att utföra massåtgärder. Till exempel kan matriser med parametrar användas med följande INSERT-instruktion för att infoga flera rader i tabellen Rader medan du bara kör en enda SQL-instruktion:
INSERT INTO Lines (OrderID, Line, PartID, Quantity) VALUES (?, ?, ?, ?)Om en datakälla inte stöder matriser med parametrar kan drivrutinen emulera dem genom att köra SQL-instruktionen en gång för varje uppsättning parametrar. Mer information finns i Instruktionsparametrar och matriser med parametervärden senare i den här artikeln.
De olika typerna av batchar kan inte blandas på ett driftskompatibelt sätt. Det vill säga hur ett program avgör resultatet av att köra en explicit batch som innehåller proceduranrop, en explicit batch som använder matriser med parametrar och ett proceduranrop som använder matriser med parametrar är drivrutinsspecifikt.