Apa perbedaan antara stored procedure dan function di mysql?

MySQL adalah sistem manajemen basis data relasional sumber terbuka. Itu dapat dengan mudah mengelola volume data yang besar. Untuk detail lebih lanjut tentang MySQL, lihat Pertanyaan Wawancara MySQL

MySQL adalah salah satu database gratis paling populer dan didukung oleh Oracle. Mudah digunakan, fleksibel, dan cepat. Di blog ini, kita akan membandingkan fungsi kustom dan prosedur tersimpan dan memahami cara menulis yang sederhana

Prosedur tersimpan

Alih-alih mengirimkan beberapa pernyataan SQL ke server basis data, sebuah aplikasi dapat mengirimkan sekumpulan kueri dalam apa yang disebut prosedur tersimpan. Prosedur tersimpan dapat digunakan kembali dan dapat digunakan oleh berbagai aplikasi untuk meningkatkan kinerja

Fungsi

Ada banyak jenis fungsi seperti fungsi agregat, fungsi aliran kontrol, fungsi string, perbandingan, tanggal dan waktu, fungsi matematika, dan sebagainya. Masing-masing fungsi ini melakukan tugas tertentu dan mengembalikan hasilnya. Lihat Pertanyaan Wawancara SQL untuk mempelajari tentang berbagai jenis fungsi, termasuk fungsi yang ditentukan pengguna dan disimpan secara mendetail

Sekarang setelah kita mengetahui dasar-dasar prosedur dan fungsi tersimpan, mari kita lakukan perbandingan keduanya secara berdampingan –

Meskipun MySQL efisien dalam menangani data dalam jumlah besar, sekarang ada database NoSQL yang menangani data tidak terstruktur dengan cara yang lebih baik. Basis data seperti MongoDB lebih cepat dalam menangani basis data besar. Untuk mengetahui lebih banyak fitur dan keunggulan MongoDB, lihat Daftar Pertanyaan Wawancara MongoDB kami. Namun, MySQL membantu dengan ketersediaan tinggi dan redundansi data

Cara membuat prosedur tersimpan

Mari kita membuat stored procedure sederhana yang mendapatkan jumlah siswa yang lulus dengan perbedaan dari tabel siswa

BUAT PROSEDUR GetNumberOfDistinctions(IN mintmarksINT, OUT hitung INT)

MULAI

SELECT count(student_id) INTO countFROM students WHERE marks >=mintmarks;

AKHIR

Dalam prosedur ini, kami telah menggunakan satu parameter masuk dan satu parameter keluar. Saat kami memanggil prosedur, kami mendapatkan hitungan yang dihasilkan

HUBUNGI GetNumberOfDistinctions(75, @count);

PILIH @hitung;

Cara membuat fungsi kustom

Mari kita buat fungsi khusus untuk tujuan yang sama seperti di atas

Perhatikan perbedaan dalam sintaks

BUAT FUNGSI get_number_of_distinctions(minmarks INT) KEMBALIKAN INT

MULAI

MENYATAKAN hitungan INT DEFAULT 0;

PILIH hitung(nomor_siswa) KE hitung DARI siswa WHERE tanda >= minmarks;

hitungan KEMBALI;

AKHIR;

Saat Anda memanggil fungsi, ini mengembalikan nilai hitungan

int hitung = get_number_of_distinctions(75);

Kesimpulan

Prosedur dan fungsi tersimpan di MySQL memiliki tujuan yang sama sekali berbeda. Fungsi adalah tugas yang lebih kecil sedangkan prosedur membutuhkan lebih banyak akurasi dan waktu serta memecahkan logika bisnis yang lebih kompleks

Kami memiliki koleksi Pertanyaan dan Jawaban Wawancara Terbaik yang membantu Anda memecahkan wawancara mendatang

Perbedaan yang paling signifikan antara prosedur dan fungsi adalah bahwa keduanya dipanggil secara berbeda dan untuk tujuan yang berbeda. Selain itu berikut adalah perbedaan antara prosedur dan fungsi -

  • Prosedur tidak mengembalikan nilai. Sebaliknya, itu dipanggil dengan pernyataan CALL untuk melakukan operasi seperti memodifikasi tabel atau memproses catatan yang diambil

    Di sisi lain, fungsi dipanggil dalam ekspresi dan mengembalikan satu nilai langsung ke pemanggil untuk digunakan dalam ekspresi. Artinya, fungsi digunakan dalam ekspresi dengan cara yang sama seperti konstanta, fungsi bawaan, atau referensi ke kolom tabel

  • Kami tidak dapat memanggil fungsi dengan pernyataan CALL. Kami tidak dapat memanggil prosedur dalam ekspresi

  • Sintaks untuk pembuatan rutin agak berbeda dari prosedur dan fungsi sebagai berikut -

CREATE
   [DEFINER = { user | CURRENT_USER }]
   PROCEDURE sp_name ([proc_parameter[,...]])
   [characteristic ...] routine_body

CREATE
   [DEFINER = { user | CURRENT_USER }]
   FUNCTION sp_name ([func_parameter[,...]])
   RETURNS type
   [characteristic ...] routine_body

proc_parameter:
   [ IN | OUT | INOUT ] param_name type

func_parameter:
   param_name type

type:
   Any valid MySQL data type

characteristic:
   COMMENT 'string'
   | LANGUAGE SQL
   | [NOT] DETERMINISTIC
   | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
   | SQL SECURITY { DEFINER | INVOKER }

routine_body:
   Valid SQL routine statement
  • Parameter prosedur dapat didefinisikan sebagai input-only, output-only, atau keduanya input dan output. Ini berarti bahwa suatu prosedur dapat mengembalikan nilai ke pemanggil dengan menggunakan parameter output. Nilai-nilai ini dapat diakses dalam pernyataan yang mengikuti pernyataan CALL

    Di sisi lain, fungsi hanya memiliki parameter input. Akibatnya, meskipun prosedur dan fungsi dapat memiliki parameter, sintaks deklarasi parameter prosedur berbeda dari fungsi

  • Fungsi mengembalikan nilai, jadi harus ada klausa RETURNS dalam definisi fungsi untuk menunjukkan tipe data dari nilai yang dikembalikan. Selain itu, setidaknya harus ada satu pernyataan RETURN di dalam badan fungsi untuk mengembalikan nilai ke pemanggil

    Apa perbedaan antara fungsi dan prosedur tersimpan?

    Dalam suatu fungsi, wajib menggunakan argumen RETURNS dan RETURN, sedangkan dalam stored procedure tidak diperlukan . Singkatnya, prosedur tersimpan lebih fleksibel untuk menulis kode apa pun yang Anda inginkan, sedangkan fungsi memiliki struktur dan fungsionalitas yang kaku.

    Mengapa kami menggunakan fungsi alih-alih prosedur tersimpan di SQL?

    Fungsi tidak dapat mengubah apa pun dan harus memiliki setidaknya satu parameter . Mereka juga harus mengembalikan hasilnya. Prosedur tersimpan tidak memerlukan parameter, dapat memodifikasi objek database, dan tidak harus mengembalikan hasil. Prosedur tersimpan digunakan untuk menghubungkan kueri SQL dalam transaksi dan untuk berkomunikasi dengan dunia luar.

    Apa perbedaan utama antara prosedur dan fungsi?

    Fungsi digunakan untuk menghitung hasil menggunakan masukan yang diberikan. Prosedur digunakan untuk melakukan tugas tertentu secara berurutan .

    Apa itu prosedur dan fungsi di MySQL?

    Prosedur dipanggil menggunakan pernyataan CALL, dan hanya dapat mengembalikan nilai menggunakan variabel keluaran. Sebuah fungsi dapat dipanggil dari dalam pernyataan seperti fungsi lainnya (yaitu, dengan memanggil nama fungsi), dan dapat mengembalikan nilai skalar. Rutinitas tersimpan dapat memanggil rutinitas tersimpan lainnya. Pada MySQL 5. 0