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

Buat Prosedur Tersimpan di SQL Server 2017

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

Prosedur tersimpan lebih dari sekadar skrip 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
...

Contoh

Berikut adalah contoh membuat prosedur tersimpan dan kemudian menjalankan prosedur tersimpan tersebut.

  1. Buat Prosedur Tersimpan

    Jalankan pernyataan berikut terhadap database Musik yang telah kita buat selama tutorial ini.

    Contoh ini membuat prosedur tersimpan yang disebut AlbumsFromArtist. Ini memilih semua album dari artis yang ditentukan saat prosedur tersimpan berjalan.

    CREATE PROCEDURE spAlbumsFromArtist 
    	@ArtistName varchar(255)
    AS
    	SELECT AlbumName, ReleaseDate
    	FROM Albums
    		INNER JOIN Artists
    		ON Albums.ArtistId = Artists.ArtistId 
    	WHERE Artists.ArtistName = @ArtistName;
    GO
  2. Lihat Prosedur Tersimpan

    Luaskan Programmabilitas> Prosedur Tersimpan node di bawah database yang berlaku untuk melihat prosedur tersimpan yang baru Anda buat. Anda juga dapat memperluas Parameter prosedur tersimpan node untuk melihat parameter yang harus Anda lewati saat menjalankannya.

  3. Jalankan Prosedur Tersimpan

    Sekarang prosedur tersimpan telah dibuat, Anda dapat menjalankannya dengan menggunakan EXECUTE pernyataan dan melewati parameter yang diperlukan.

    Dalam contoh kita, kita harus memberikan nama artis.

    EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";

    Atau, Anda dapat menghilangkan nama parameter saat meneruskan parameter. Seperti ini:

    EXECUTE spAlbumsFromArtist "Devin Townsend";

Mengubah Prosedur Tersimpan

Anda dapat memodifikasi prosedur tersimpan Anda dengan ALTER PROCEDURE penyataan. Sama seperti ketika Anda mengubah tampilan, Anda dapat mengubah prosedur tersimpan hanya dengan menerapkan definisi prosedur tersimpan yang baru.

  1. Ubah Prosedur Tersimpan

    Jalankan pernyataan berikut. Ini menambahkan kolom baru ke hasil yang dikembalikan oleh prosedur tersimpan. Kami juga menambahkan alias ke nama kolom.

    ALTER PROCEDURE spAlbumsFromArtist 
    	@ArtistName varchar(255)
    AS
    	SELECT 
            al.AlbumName, 
            al.ReleaseDate, 
            g.Genre
    	FROM Albums al
    		INNER JOIN Artists ar
    		ON al.ArtistId = ar.ArtistId 
    		INNER JOIN Genres g
    		ON g.GenreId = al.GenreId 
    	WHERE ar.ArtistName = @ArtistName;
    GO
  2. Jalankan Prosedur Tersimpan

    Sekarang kita telah menambahkan Genre kolom ke tampilan, prosedur tersimpan sekarang mengembalikan kolom itu saat kita menjalankannya.

    EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Keunggulan Kinerja SQL Server 2016 Enterprise Edition

  2. 6 Cara Mengonversi String ke Nilai Tanggal/Waktu di SQL Server

  3. Cara menggunakan UPDATE dari SELECT di SQL Server

  4. Cuplikan Basis Data SQL Server -3

  5. T-SQL:Berlawanan dengan penggabungan string - cara membagi string menjadi beberapa record