Bagikan melalui


Batch Pernyataan SQL

Batch pernyataan SQL adalah sekelompok dua pernyataan SQL atau lebih atau satu pernyataan SQL yang memiliki efek yang sama dengan sekelompok dua pernyataan SQL atau lebih. Dalam beberapa implementasi, seluruh pernyataan batch dijalankan sebelum hasil apa pun tersedia. Ini sering lebih efisien daripada mengirimkan pernyataan secara terpisah, karena lalu lintas jaringan sering dapat dikurangi dan sumber data terkadang dapat mengoptimalkan eksekusi batch pernyataan SQL. Dalam implementasi lain, memanggil SQLMoreResults memicu eksekusi pernyataan berikutnya dalam batch. ODBC mendukung jenis batch berikut:

  • Batch Eksplisit Batch eksplisit adalah dua pernyataan SQL atau lebih yang dipisahkan oleh titik koma (;). Misalnya, batch pernyataan SQL berikut membuka pesanan penjualan baru. Ini memerlukan penyisipan baris ke dalam tabel Pesanan dan Baris. Perhatikan bahwa tidak ada titik koma setelah pernyataan terakhir.

    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)  
    
  • Prosedur Jika prosedur berisi lebih dari satu pernyataan SQL, prosedur dianggap sebagai batch pernyataan SQL. Misalnya, pernyataan khusus SQL Server berikut membuat prosedur yang mengembalikan kumpulan hasil yang berisi informasi tentang pelanggan dan kumpulan hasil yang mencantumkan semua pesanan penjualan terbuka untuk pelanggan tersebut:

    CREATE PROCEDURE GetCustInfo (@CustomerID INT) AS  
       SELECT * FROM Customers WHERE CustID = @CustomerID  
       SELECT OrderID FROM Orders  
          WHERE CustID = @CustomerID AND Status = 'OPEN'  
    

    Pernyataan CREATE PROCEDURE itu sendiri bukan batch pernyataan SQL. Namun, prosedur yang dibuatnya adalah batch pernyataan SQL. Tidak ada titik koma yang memisahkan dua pernyataan SELECT karena pernyataan CREATE PROCEDURE khusus untuk SQL Server, dan SQL Server tidak memerlukan titik koma untuk memisahkan beberapa pernyataan dalam pernyataan CREATE PROCEDURE .

  • Array Parameter Array parameter dapat digunakan dengan pernyataan SQL berparameter sebagai cara yang efektif untuk melakukan operasi massal. Misalnya, array parameter dapat digunakan dengan pernyataan INSERT berikut untuk menyisipkan beberapa baris ke dalam tabel Baris sambil menjalankan hanya satu pernyataan SQL:

    INSERT INTO Lines (OrderID, Line, PartID, Quantity)  
       VALUES (?, ?, ?, ?)  
    

    Jika sumber data tidak mendukung array parameter, driver dapat menirunya dengan menjalankan pernyataan SQL sekali untuk setiap set parameter. Untuk informasi selengkapnya, lihat Parameter Pernyataan dan Array Nilai Parameter, nanti di bagian ini.

Berbagai jenis batch tidak dapat dicampur dengan cara yang dapat dioperasikan. Artinya, bagaimana aplikasi menentukan hasil menjalankan batch eksplisit yang mencakup panggilan prosedur, batch eksplisit yang menggunakan array parameter, dan panggilan prosedur yang menggunakan array parameter khusus driver.

Bagian ini berisi topik berikut.