Kapan Harus Menggunakan Prosedur
Ada sejumlah keuntungan menggunakan prosedur, semua berdasarkan fakta bahwa menggunakan prosedur memindahkan pernyataan SQL dari aplikasi ke sumber data. Apa yang tersisa dalam aplikasi adalah panggilan prosedur yang dapat dioperasikan. Manfaat tersebut mencakup:
Prosedur Performa biasanya merupakan cara tercepat untuk menjalankan pernyataan SQL. Seperti eksekusi yang disiapkan, pernyataan dikompilasi dan dijalankan dalam dua langkah terpisah. Tidak seperti eksekusi yang disiapkan, prosedur hanya dijalankan pada waktu proses. Mereka dikompilasi pada waktu yang berbeda.
Aturan Bisnis Aturan bisnis adalah aturan tentang cara perusahaan melakukan bisnis. Misalnya, hanya seseorang dengan judul Sales Person yang mungkin diizinkan untuk menambahkan pesanan penjualan baru. Menempatkan aturan ini dalam prosedur memungkinkan perusahaan individu untuk menyesuaikan aplikasi vertikal dengan menulis ulang prosedur yang dipanggil oleh aplikasi tanpa harus mengubah kode aplikasi. Misalnya, aplikasi entri pesanan mungkin memanggil prosedur InsertOrder dengan jumlah parameter tetap; persis bagaimana InsertOrder diterapkan dapat bervariasi dari perusahaan ke perusahaan.
Penggantian Terkait erat dengan penempatan aturan bisnis dalam prosedur adalah fakta bahwa prosedur dapat diganti tanpa kompilasi ulang aplikasi. Jika aturan bisnis berubah setelah perusahaan membeli dan menginstal aplikasi, perusahaan dapat mengubah prosedur yang berisi aturan tersebut. Dari sudut siaga aplikasi, tidak ada yang berubah; masih memanggil prosedur tertentu untuk menyelesaikan tugas tertentu.
Prosedur SQL khusus DBMS menyediakan cara bagi aplikasi untuk mengeksploitasi SQL khusus DBMS dan masih tetap dapat dioperasikan. Misalnya, prosedur pada DBMS yang mendukung pernyataan kontrol aliran di SQL mungkin menjebak dan pulih dari kesalahan, sementara prosedur pada DBMS yang tidak mendukung pernyataan kontrol aliran mungkin hanya mengembalikan kesalahan.
Prosedur bertahan dari transaksi Pada beberapa sumber data, rencana akses untuk semua pernyataan yang disiapkan pada koneksi dihapus ketika transaksi dilakukan atau digulung balik. Dengan menempatkan pernyataan SQL dalam prosedur, yang disimpan secara permanen di sumber data, pernyataan bertahan dari transaksi. Apakah prosedur bertahan dalam keadaan yang disiapkan, disiapkan sebagian, atau tidak siap adalah khusus DBMS.
Prosedur pengembangan terpisah dapat dikembangkan secara terpisah dari aplikasi lainnya. Dalam perusahaan besar, ini mungkin memberikan cara untuk lebih mengeksploitasi keterampilan programmer yang sangat khusus. Dengan kata lain, programmer aplikasi dapat menulis kode antarmuka pengguna dan pemrogram database dapat menulis prosedur.
Prosedur umumnya digunakan oleh aplikasi vertikal dan kustom. Aplikasi ini cenderung melakukan tugas tetap, dan dimungkinkan untuk panggilan prosedur kode keras di dalamnya. Misalnya, aplikasi entri pesanan mungkin memanggil prosedur InsertOrder, DeleteOrder, UpdateOrder, dan GetOrders.
Ada sedikit alasan untuk memanggil prosedur dari aplikasi generik. Prosedur biasanya ditulis untuk melakukan tugas dalam konteks aplikasi tertentu sehingga tidak ada gunanya untuk aplikasi generik. Misalnya, spreadsheet tidak memiliki alasan untuk memanggil prosedur InsertOrder yang baru saja disebutkan. Selain itu, aplikasi generik tidak boleh membangun prosedur pada waktu proses dengan harapan memberikan eksekusi pernyataan yang lebih cepat; tidak hanya ini cenderung lebih lambat daripada eksekusi yang disiapkan atau langsung, ini juga memerlukan pernyataan SQL khusus DBMS.
Pengecualian untuk ini adalah lingkungan pengembangan aplikasi, yang sering menyediakan cara bagi programmer untuk membangun pernyataan SQL yang menjalankan prosedur dan dapat memberikan cara bagi programmer untuk menguji prosedur. Lingkungan tersebut memanggil SQLProcedures untuk mencantumkan prosedur yang tersedia dan SQLProcedureColumns untuk mencantumkan parameter input, input/output, dan output prosedur, nilai pengembalian prosedur, dan kolom dari setiap kumpulan hasil yang dibuat oleh prosedur. Namun, prosedur tersebut harus dikembangkan sebelumnya pada setiap sumber data; melakukannya memerlukan pernyataan SQL khusus DBMS.
Ada tiga kelemahan utama untuk menggunakan prosedur. Yang pertama adalah bahwa prosedur harus ditulis dan dikompilasi untuk setiap DBMS yang akan dijalankan aplikasi. Meskipun ini bukan masalah untuk aplikasi kustom, ini dapat secara signifikan meningkatkan waktu pengembangan dan pemeliharaan untuk aplikasi vertikal yang dirancang untuk berjalan dengan sejumlah DBMS.
Kerugian kedua adalah bahwa banyak DBMS tidak mendukung prosedur. Sekali lagi, ini kemungkinan besar menjadi masalah bagi aplikasi vertikal yang dirancang untuk berjalan dengan sejumlah DBMS. Untuk menentukan apakah prosedur didukung, aplikasi memanggil SQLGetInfo dengan opsi SQL_PROCEDURES.
Kerugian ketiga, yang terutama berlaku untuk lingkungan pengembangan aplikasi, adalah bahwa ODBC tidak menentukan tata bahasa standar untuk membuat prosedur. Artinya, meskipun aplikasi dapat memanggil prosedur secara interoperabilitas, aplikasi tidak dapat membuatnya secara interoperabilitas.