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

Apa itu prosedur tersimpan?

Prosedur tersimpan adalah kumpulan pernyataan SQL yang dapat dieksekusi dalam beberapa cara. Sebagian besar DBM utama mendukung prosedur tersimpan; Namun, tidak semua melakukannya. Anda perlu memverifikasi dengan dokumentasi bantuan DBMS khusus Anda. Karena saya paling akrab dengan SQL Server, saya akan menggunakannya sebagai sampel saya.

Untuk membuat prosedur tersimpan sintaksnya cukup sederhana:

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

Jadi misalnya:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

    SELECT * from [Users]
    WHERE ISNULL(@login,login)=login

Manfaat prosedur tersimpan adalah Anda dapat memusatkan logika akses data ke satu tempat yang kemudian mudah dioptimalkan oleh DBA. Prosedur tersimpan juga memiliki manfaat keamanan karena Anda dapat memberikan hak eksekusi ke prosedur tersimpan tetapi pengguna tidak perlu memiliki izin baca/tulis pada tabel yang mendasarinya. Ini adalah langkah pertama yang baik untuk melawan injeksi SQL.

Prosedur tersimpan memang memiliki kelemahan, pada dasarnya pemeliharaan yang terkait dengan operasi CRUD dasar Anda. Katakanlah untuk setiap tabel Anda memiliki Sisipkan, Perbarui, Hapus dan setidaknya satu pilih berdasarkan kunci utama, itu berarti setiap tabel akan memiliki 4 prosedur. Sekarang ambil database ukuran 400 tabel yang layak, dan Anda memiliki 1600 prosedur! Dan itu dengan asumsi Anda tidak memiliki duplikat yang mungkin Anda miliki.

Di sinilah menggunakan ORM atau metode lain untuk secara otomatis menghasilkan operasi CRUD dasar Anda memiliki banyak manfaat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLServer vs StateServer untuk Kinerja Status Sesi ASP.NET

  2. SQL Server Query:Cepat dengan Literal tetapi Lambat dengan Variabel

  3. Bagaimana cara memeriksa apakah prosedur tersimpan ada sebelum membuatnya

  4. Bagaimana saya bisa menemukan karakter Unicode/non-ASCII di bidang NTEXT di tabel SQL Server 2005?

  5. Perbaiki:"LOG CADANGAN tidak dapat dilakukan karena tidak ada cadangan basis data saat ini." di SQL Server/SQL Edge