sql >> Databáze >  >> RDS >> Sqlserver

Co je uložená procedura?

Uložené procedury jsou dávkou příkazů SQL, které lze provést několika způsoby. Většina hlavních DBM podporuje uložené procedury; ne však všichni ano. Konkrétní údaje si budete muset ověřit ve své konkrétní dokumentaci nápovědy DBMS. Protože jsem nejlépe obeznámen s SQL Serverem, použiji jej jako své vzorky.

Pro vytvoření uložené procedury je syntaxe poměrně jednoduchá:

CREATE PROCEDURE <owner>.<procedure name>

     <Param> <datatype>

AS

     <Body>

Takže například:

CREATE PROCEDURE Users_GetUserInfo

    @login nvarchar(30)=null

AS

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

Výhodou uložených procedur je to, že můžete centralizovat logiku přístupu k datům na jediné místo, které je pak pro DBA snadné optimalizovat. Uložené procedury mají také výhodu zabezpečení v tom, že můžete udělit práva ke spouštění uložené proceduře, ale uživatel nebude muset mít oprávnění ke čtení/zápisu na podkladové tabulky. Toto je dobrý první krok proti SQL injection.

Uložené procedury mají své nevýhody, v podstatě údržbu spojenou s vaším základním provozem CRUD. Řekněme, že pro každou tabulku máte Insert, Update, Delete a alespoň jeden výběr na základě primárního klíče, to znamená, že každá tabulka bude mít 4 procedury. Nyní si vezměte slušnou databázi 400 tabulek a máte 1600 procedur! A to za předpokladu, že nemáte duplikáty, což pravděpodobně budete.

To je místo, kde použití ORM nebo nějaké jiné metody k automatickému generování vašich základních operací CRUD má spoustu výhod.



  1. Převezměte kontrolu nad svými daty pomocí Microsoft Access

  2. Jaký je rozdíl mezi MySQL a SQL?

  3. Vytvořte dotaz v SQL Server 2017

  4. Nainstalujte řazení utf8 v PostgreSQL