Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво е съхранена процедура?

Съхранените процедури са партида от SQL оператори, които могат да бъдат изпълнени по няколко начина. Повечето основни DBM поддържат съхранени процедури; обаче не всички го правят. Ще трябва да проверите с вашата конкретна помощна документация за СУБД за подробности. Тъй като съм най-запознат със SQL Server, ще го използвам като мои мостри.

За да създадете съхранена процедура, синтаксисът е доста прост:

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

Така например:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

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

Предимството на съхранените процедури е, че можете да централизирате логиката за достъп до данни на едно място, което след това е лесно за оптимизиране на DBA. Съхранените процедури също имат предимство за сигурността, тъй като можете да предоставите права за изпълнение на съхранена процедура, но потребителят няма да има нужда да има разрешения за четене/запис на основните таблици. Това е добра първа стъпка срещу SQL инжектирането.

Съхранените процедури идват с недостатъци, основно поддръжката, свързана с основната ви CRUD операция. Да приемем, че за всяка таблица имате Insert, Update, Delete и поне един избор въз основа на първичния ключ, което означава, че всяка таблица ще има 4 процедури. Сега вземете база данни с приличен размер от 400 таблици и имате 1600 процедури! И това е при условие, че нямате дубликати, което вероятно ще имате.

Това е мястото, където използването на ORM или някакъв друг метод за автоматично генериране на вашите основни CRUD операции има много предимства.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на DISTINCT стойности в STRING_AGG

  2. Компресиране на специфичен дял в таблица в SQL Server (T-SQL)

  3. Актуализирайте SQL с последователно номериране

  4. Как да генерирате скриптове за добавяне на ограничения по подразбиране към колона в множество таблици в база данни на SQL Server - SQL Server / TSQL Урок, част 94

  5. Как да получите списък с таблици без ограничение на първичния ключ в база данни на SQL Server - SQL Server / T-SQL Урок, част 58