logo

SQL uložené procedury

Uložená procedura v SQL je skupina SQL dotazů, které lze uložit a opakovaně použít. Je to velmi užitečné, protože snižuje potřebu přepisování SQL dotazů. Zvyšuje efektivitu, opětovnou použitelnost a bezpečnost při správě databází.

Uživatelé mohou také předávat parametry uloženým procedurám, takže uložená procedura může působit na předané hodnoty parametrů.

Uložené procedury jsou vytvořeny k provedení jedné nebo více DML operace na databázi. Není to nic jiného než skupina SQL příkazy který přijímá nějaký vstup ve formě parametrů, provádí nějakou úlohu a může nebo nemusí vrátit hodnotu.



Syntax

Dvě důležité syntaxe pro použití uložených procedur v SQL jsou:

Syntaxe pro vytvoření uložené procedury

CREATE PROCEDURE název_procedury
(parametr1 datový_typ, parametr2 datový_typ, …)
TAK JAKO
ZAČÍT
— Příkazy SQL, které mají být provedeny
KONEC

Syntaxe pro spuštění uložené procedury

EXEC název_procedury hodnota_parametru, hodnota_parametru2, ..

Parametr

Nejdůležitější jsou parametry. Parametry se používají k předání hodnot do procedury. Existují různé typy parametrů, které jsou následující:

  1. ZAČÍT: To je to, co se přímo provádí nebo můžeme říci, že je to spustitelná část.
  2. KONEC: Do té doby bude kód spuštěn.

Příklad uložené procedury SQL

Podívejme se na příklad uložené procedury v SQL, abychom jí lépe porozuměli.

Představte si databázi s názvem SampleDB, tabulku s názvem Zákazníci s ukázkovými daty a uloženou proceduru s názvem GetCustomersByCountry.

Uložená procedura přebírá parametr Země a vrací seznam zákazníků z tabulky Zákazníci, který odpovídá zadané zemi. Nakonec se provede uložená procedura s parametrem Srí Lanka pro načtení seznamu zákazníků ze Srí Lanky.

Dotaz:

-- Create a new database named 'SampleDB' CREATE DATABASE SampleDB;  -- Switch to the new database USE SampleDB;  -- Create a new table named 'Customers' CREATE TABLE Customers (  CustomerID INT PRIMARY KEY,  CustomerName VARCHAR(50),  ContactName VARCHAR(50),  Country VARCHAR(50) );  -- Insert some sample data into the Customers table INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country) VALUES (1, 'Shubham', 'Thakur', 'India'),  (2, 'Aman ', 'Chopra', 'Australia'),  (3, 'Naveen', 'Tulasi', 'Sri lanka'),  (4, 'Aditya', 'Arpan', 'Austria'),  (5, 'Nishant. Salchichas S.A.', 'Jain', 'Spain');  -- Create a stored procedure named 'GetCustomersByCountry' CREATE PROCEDURE GetCustomersByCountry  @Country VARCHAR(50) AS BEGIN  SELECT CustomerName, ContactName  FROM Customers  WHERE Country = @Country; END;  -- Execute the stored procedure with parameter 'Sri lanka' EXEC GetCustomersByCountry @Country = 'Sri lanka';>

Poznámka: Budete se muset ujistit, že uživatelský účet má potřebná oprávnění k vytvoření databáze. Můžete se zkusit přihlásit jako jiný uživatel s oprávněními správce nebo kontaktovat správce databáze, aby vašemu uživatelskému účtu udělil potřebná oprávnění. Pokud používáte cloudovou databázovou službu, ujistěte se, že jste správně nakonfigurovali uživatelský účet a jeho oprávnění.

Výstup:

číslovaná abeceda
Jméno zákazníka kontaktní jméno
Naveen Tulasí

Důležité body o uložených procedurách SQL

  • Uložená procedura je připravený kód SQL, který můžete uložit, takže kód lze znovu a znovu použít.
  • Uložené procedury umožňují, aby kód, který se používá opakovaně, byl uložen do databáze a spouštěn odtud, nikoli z klienta. To poskytuje modulárnější přístup k návrhu databáze.
  • Protože uložené procedury jsou kompilovány a uloženy v databázi, jsou vysoce efektivní. SQL Server zkompiluje každou uloženou proceduru jednou a poté znovu využije plán provádění. To vede k obrovskému zvýšení výkonu při opakovaném volání uložených procedur.
  • Uložené procedury poskytují lepší zabezpečení vašich dat. Uživatelé mohou provádět uloženou proceduru, aniž by museli přímo spouštět některý z příkazů. Proto může být uživateli uděleno oprávnění ke spuštění uložené procedury, aniž by měl jakákoli oprávnění k podkladovým tabulkám.
  • Uložené procedury mohou snížit síťový provoz a latenci a zvýšit výkon aplikací. Jediné volání uložené procedury může provést mnoho příkazů.
  • Uložené procedury mají lepší podporu pro zpracování chyb.
  • Uložené procedury lze použít k poskytování pokročilých funkcí databáze, jako je úprava dat v tabulkách a zapouzdření těchto změn do databázových transakcí.