Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2016:Buat Prosedur Tersimpan

Prosedur tersimpan adalah sekelompok pernyataan SQL yang dikompilasi menjadi satu. Prosedur tersimpan dapat mencakup logika bisnis dan konstruksi pemrograman lainnya.

Di SQL Server, prosedur tersimpan adalah grup dari satu atau lebih pernyataan Transact-SQL atau referensi ke metode bahasa runtime umum (CLR) Microsoft .NET Framework.

Kemampuan Program

Tetapi prosedur tersimpan lebih dari sekadar skrip yang panjang. Ini adalah skrip yang telah disimpan di SQL Server secara khusus di bawah Stored Procedures simpul, dan dapat:

  • Terima parameter masukan (dan kembalikan beberapa nilai dalam bentuk parameter keluaran ke program pemanggil).
  • Berisi pernyataan pemrograman.
  • Mengembalikan nilai status ke program panggilan untuk menunjukkan keberhasilan atau kegagalan, dan alasan kegagalan apa pun.

Prosedur tersimpan sering mengandung logika bisnis. Misalnya, prosedur tersimpan dapat menerima parameter yang diteruskan ke sana dan menguji parameter tersebut menggunakan IF pernyataan. Misalnya, jika parameternya adalah satu nilai, lakukan ini, jika itu nilai lain, lakukan itu.

Prosedur tersimpan dapat meningkatkan kinerja dalam aplikasi, karena prosedur tersimpan diuraikan dan dioptimalkan segera setelah dibuat, lalu disimpan dalam memori. Menjalankan kueri bersyarat melalui prosedur tersimpan bisa sangat cepat - dibandingkan dengan aplikasi yang mengirimkan kueri melalui jaringan, ke SQL Server, kemudian mengembalikan semua data ke dalamnya melalui jaringan sehingga dapat menyaringnya, dan memilih hanya catatan yang diminatinya.

Manfaat Prosedur Tersimpan

Berikut adalah beberapa manfaat utama dalam menggunakan prosedur tersimpan:

Manfaat Penjelasan
Pemrograman Modular Anda dapat menulis prosedur tersimpan sekali, lalu memanggilnya lagi dan lagi, dari berbagai bagian aplikasi (dan bahkan dari beberapa aplikasi).
Kinerja Prosedur tersimpan memberikan eksekusi kode yang lebih cepat dan mengurangi lalu lintas jaringan.
  • Eksekusi lebih cepat:Prosedur tersimpan diuraikan dan dioptimalkan segera setelah dibuat dan prosedur tersimpan disimpan dalam memori. Ini berarti bahwa itu akan dieksekusi jauh lebih cepat daripada mengirim banyak baris kode SQL dari aplikasi Anda ke SQL Server. Untuk melakukan itu, SQL Server harus mengompilasi dan mengoptimalkan kode SQL Anda setiap kali dijalankan.
  • Pengurangan lalu lintas jaringan:Jika Anda mengirim banyak baris kode SQL melalui jaringan ke SQL Server Anda, ini akan berdampak pada kinerja jaringan. Ini terutama benar jika Anda memiliki ratusan baris kode SQL dan/atau Anda memiliki banyak aktivitas di aplikasi Anda. Menjalankan kode pada SQL Server (sebagai prosedur tersimpan) menghilangkan kebutuhan untuk mengirim kode ini melalui jaringan. Satu-satunya lalu lintas jaringan adalah parameter yang diberikan dan hasil kueri apa pun.
Keamanan Pengguna dapat menjalankan prosedur tersimpan tanpa perlu mengeksekusi pernyataan apa pun secara langsung. Oleh karena itu, prosedur tersimpan dapat menyediakan fungsionalitas database tingkat lanjut untuk pengguna yang biasanya tidak memiliki akses ke tugas ini, tetapi fungsi ini tersedia dengan cara yang dikontrol dengan ketat.

Cara Membuat Prosedur Tersimpan

Untuk membuat prosedur tersimpan, gunakan CREATE PROCEDURE pernyataan, diikuti oleh kode yang membentuk prosedur tersimpan. Jika prosedur tersimpan Anda akan menerima parameter, parameter tersebut harus disertakan setelah nama.

CREATE PROCEDURE myStoredProcedure AS
...

OR

CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS
...

Sekarang kita akan membuat prosedur tersimpan berdasarkan salah satu tampilan yang kita buat sebelumnya — RecentAlbums lihat.

Tampilan ini mengembalikan semua album yang dirilis dalam 20 tahun terakhir. Ini baik-baik saja selama itu hanya perlu melihat ke belakang 20 tahun. Tetapi bagaimana jika Anda ingin pengguna memilih berapa tahun yang harus dicakup?

Prosedur tersimpan dapat mengatasi masalah ini.

Kami akan membuat prosedur tersimpan yang menerima parameter. Nilai parameter akan menjadi jumlah tahun untuk mencari kembali. Oleh karena itu, nilai ini dapat ditentukan oleh pengguna setiap kali mereka menjalankan prosedur tersimpan.

  1. Desain Prosedur Tersimpan

    Buka jendela kueri baru dan tambahkan kode untuk prosedur tersimpan.

    Dalam kasus kami, kami akan menyalin/menempelkan kode dari RecentArtists melihat dan memodifikasi bagian atas, sehingga menjadi prosedur tersimpan.

    Kami akan menambahkan parameter yang disebut @Count yang akan menentukan berapa tahun prosedur tersimpan harus melihat ke belakang.

    Jadi kami akan mengganti nilai hardcode dari 20 dengan @Count

    Contoh Kode

    Berikut kode dari contoh kita:

    CREATE PROCEDURE spRecentAlbums @Count int
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName,
            Artists.ActiveFrom
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - @Count, GETDATE()));
  2. Buat Prosedur Tersimpan

    Setelah semuanya terlihat bagus, Anda dapat menjalankan pernyataan untuk membuat prosedur tersimpan.

    Klik Jalankan untuk membuat prosedur tersimpan.

    Setelah prosedur tersimpan dibuat, Anda dapat melihatnya di Object Explorer (Anda mungkin perlu menyegarkan Prosedur Tersimpan simpul terlebih dahulu).

  3. Jalankan Prosedur Tersimpan

    Sekarang setelah dibuat, Anda dapat menjalankan prosedur tersimpan.

    Buka jendela kueri baru, tambahkan ini:

    EXEC spRecentAlbums @Count = 5;

    Sekarang klik Jalankan dari bilah alat.

    Prosedur tersimpan akan mengembalikan semua album yang dirilis dalam 5 tahun terakhir.

  4. Coba Parameter yang berbeda

    Coba ubah nilai parameter untuk melihat bagaimana hal ini memengaruhi hasil.

    Anda juga dapat menjalankan beberapa pernyataan satu demi satu. Panel hasil baru akan muncul untuk setiap pernyataan.

Template Prosedur Tersimpan

Di SQL Server 2016, Anda dapat membuat prosedur tersimpan dengan mengklik kanan Prosedur Tersimpan node di Object Explorer dan memilih New> Stored Procedure... atau Baru> Prosedur Tersimpan yang Dikompilasi Secara Asli... .

Ini akan membuka template yang siap diisi dengan prosedur spesifik Anda sendiri.

Jalankan Prosedur Tersimpan melalui GUI

Anda juga dapat menggunakan antarmuka pengguna grafis untuk menjalankan prosedur tersimpan.

  1. Luncurkan Execute Procedure Kotak Dialog

    Di Object Explorer, klik kanan pada stored procedure dan pilih Execute Stored Procedure... .

  2. Parameter Pasokan

    Masukkan nilai untuk parameter apa pun yang diperlukan prosedur tersimpan, lalu klik OK .

  3. Hasilnya

    Hasilnya ditampilkan.

Ubah Prosedur Tersimpan

Jika Anda perlu mengubah prosedur tersimpan yang ada, cukup ganti CREATE dengan ALTER (bersama dengan prosedur yang diperbarui).

Contoh ini memodifikasi prosedur tersimpan sehingga hasilnya diurutkan berdasarkan tanggal rilis dalam urutan menurun:

ALTER PROCEDURE spRecentAlbums @Count int
AS
SELECT  Albums.ReleaseDate, 
        Albums.AlbumName, 
        Genres.Genre, 
        Artists.ArtistName,
        Artists.ActiveFrom
FROM Albums 
INNER JOIN
        Artists ON 
        Albums.ArtistId = Artists.ArtistId 
        INNER JOIN
            Genres ON 
            Albums.GenreId = Genres.GenreId
WHERE   (Albums.ReleaseDate > DATEADD(year, - @Count, GETDATE()))
ORDER BY Albums.ReleaseDate DESC;

Prosedur Tersimpan Sistem

SQL Server mencakup sejumlah besar prosedur tersimpan sistem untuk membantu dalam tugas-tugas administrasi database. Banyak tugas yang dapat Anda lakukan melalui GUI dapat dilakukan melalui prosedur tersimpan sistem. Misalnya, beberapa hal yang dapat Anda lakukan dengan prosedur tersimpan sistem meliputi:

  • Konfigurasikan akun keamanan
  • Siapkan server tertaut
  • Buat rencana pemeliharaan basis data
  • Buat katalog pencarian teks lengkap
  • Tambahkan login jarak jauh
  • Konfigurasikan replikasi
  • Menyiapkan tugas terjadwal
  • dan masih banyak lagi...

Prosedur tersimpan sistem diawali dengan sp_ , jadi sebaiknya hindari menggunakan awalan itu untuk prosedur Anda sendiri.

Konvensi Penamaan

Sebaiknya kembangkan konvensi penamaan yang konsisten untuk prosedur tersimpan Anda (dan untuk semua objek lain di database Anda).

Beberapa orang mengawali prosedur tersimpan mereka dengan usp_ (untuk menunjukkan prosedur tersimpan yang ditentukan pengguna), yang lain memulainya dengan kata kunci SQL seperti select , masukkan , perbarui , hapus . Lainnya menggunakan singkatan untuk aplikasi.

Beberapa menggunakan garis bawah untuk memisahkan setiap kata dalam prosedur tersimpan (misalnya, recent_albums ), sementara yang lain akan menggunakan huruf besar (misalnya, RecentAlbums ).

Oleh karena itu, ada kemungkinan bahwa prosedur tersimpan kami dapat dinamai salah satu dari berikut ini, bergantung pada konvensi penamaan yang digunakan.

  • Album Terbaru
  • album_terkini
  • uspAlbum Terbaru
  • usp_recent_albums
  • pilihAlbum Terbaru
  • pilih_Album Terbaru
  • pilih_album_baru
  • getAlbum Terbaru
  • get_recent_albums

Anda mendapatkan gambarnya. Yang penting konsistensi. Pilih satu dan patuhi itu. Ini akan membuatnya lebih mudah ketika Anda perlu menggunakan prosedur tersimpan. Bayangkan memiliki skor, atau bahkan ratusan prosedur tersimpan, dan setiap kali Anda menjalankannya, Anda perlu menavigasinya di Object Explorer semata-mata karena Anda tidak dapat mengingat apakah Anda menyebutnya usp_RecentAlbums atau uspRecentAlbums .

Seperti yang disebutkan, hindari menggunakan sp_ sebagai awalan untuk nama prosedur tersimpan Anda. SQL Server menggunakan awalan ini untuk prosedur tersimpan sistem.

SQL Server mencari prosedur tersimpan sistem terlebih dahulu, jadi yang terbaik, Anda akan mendapatkan pukulan kinerja. Paling buruk, prosedur Anda tidak akan berjalan (jika memiliki nama yang sama dengan prosedur tersimpan sistem).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu Basis Data dan Sistem Manajemen Basis Data Relasional (RDBMS)

  2. Cara Mengubah Profil Email Database Default untuk Pengguna di SQL Server (T-SQL)

  3. SQL Server UNION - Apa ORDER BY Behavior default?

  4. Cara Menghapus Trailing Whitespace di SQL Server – RTRIM()

  5. SQL Server Membangun Kembali dan Mengatur Ulang Indeks