sql >> Databáze >  >> RDS >> Database

Jak vytvořit uložené procedury v SQL?

Procedury jsou podprogramy, které lze vytvořit a uložit do databáze jako databázové objekty. Stejně jako v jiných jazycích můžete vytvářet a rušit procedury také v SQL. V tomto článku prozkoumáme procedury v SQL se syntaxí a příklady.

Témata probíraná v článku jsou:

  • Co je to procedura v SQL?
  • Syntaxe procedur SQL
  • Příklad procedury v SQL
  • Výhody SQL procedur

Co je to procedura v SQL?

Procedura v SQL (často označovaná jako uložená procedura) je opakovaně použitelná jednotka, která zapouzdřuje specifickou obchodní logiku aplikace. Procedura SQL je skupina příkazů a logiky SQL, které jsou zkompilovány a uloženy společně za účelem provedení konkrétního úkolu.

Níže jsou uvedeny klíčové vlastnosti procedur SQL:

  • Snadno se implementují, protože používají velmi jednoduchý jazyk na vysoké úrovni se silným typem písma
  • Podporuje tři typy parametrů, jmenovitě vstupní, výstupní a vstupně-výstupní parametry.
  • Spolehlivější než ekvivalentní externí postupy.
  • Procedury SQL podporují opětovnou použitelnost a udržovatelnost.
  • Podporuje jednoduchý, ale výkonný model zpracování stavu a chyb.
  • Vraťte hodnotu stavu volající proceduře nebo dávce, abyste označili úspěch nebo selhání a důvod selhání.

Nyní, když víte, jaké procedury jsou a proč jsou potřebné, pojďme si probrat syntaxi a příklad procedury v SQL.

Syntaxe procedur v SQL

Následující text ilustruje základní syntaxi vytváření procedury v SQL:


CREATE [ OR REPLACE] PROCEDURE procedure_name [
(parameter_name [IN | OUT | IN OUT]  type [ ])]
{IS | AS }
BEGIN [declaration_section]
executable_section 
//SQL statement used in the stored procedure
END
GO

Terminologie syntaxe

Parametr

Parametr je proměnná, která obsahuje hodnotu libovolného platného datového typu SQL, jehož prostřednictvím si podprogram může vyměňovat hodnoty s hlavním kódem. Jinými slovy, parametry se používají k předávání hodnot do procedury. Existují 3 různé typy parametrů, které jsou následující:

  • IN :Toto je výchozí parametr, který vždy přijímá hodnoty z volajícího programu. Je to proměnná pouze pro čtení uvnitř podprogramů a její hodnotu nelze v podprogramu měnit.
  • OUT: Používá se pro získání výstupu z podprogramů.
  • IN OUT: Tento parametr se používá jak pro zadávání vstupu, tak pro získávání výstupu z podprogramů.

Další terminologie

  • název-procedury určuje název procedury. Mělo by být jedinečné.
  • Volba [OR REPLACE] umožňuje úpravu existující procedury.
  • JE | AS klauzule nastaví kontext pro provedení uložené procedury. Rozdíl je v tom, že klíčové slovo „IS“ se používá, když je procedura vnořena do nějakých jiných bloků, a pokud je procedura samostatná, použije se „AS“.
  • Code_Block deklaruje procedurální příkazy, které zpracovávají veškeré zpracování v rámci uložené procedury. Obsah code_block závisí na pravidlech a procedurálním jazyce používaném databází.

Postup v SQL:Příklady

Příklad1

Následující příklad vytváří jednoduchý postup, který po spuštění zobrazí uvítací zprávu na obrazovce. Potom bude postup:

CREATE OR REPLACE PROCEDURE welcome_msg
(para1_name IN VARCHAR2)
IS 
BEGIN 
    dbms_output.put_line (‘Hello World! '|| para1_name);
END; 
/

Spusťte uloženou proceduru. Samostatnou proceduru lze volat dvěma způsoby −

  • Pomocí EXECUTE klíčové slovo
  • Volání názvu procedury z bloku SQL

Výše uvedený postup lze volat pomocí klíčového slova Execute takto:

 EXEC welcome_msg (‘Welcome to Edureka!’);

Výstup

Hello World! Welcome to Edureka 

Procedura se provede a zpráva se vytiskne jako „Ahoj světe! Vítejte v Edurece.“

Příklad 2

Předpokládejme, že máte tabulku s podrobnostmi o zaměstnanci, jako je EmployeId, Firstname, Lastname a DepartmentDetails.

Tento příklad vytvoří proceduru SQL, která vrátí jméno zaměstnance, když EmployeId je dán jako vstupní parametr do uložené procedury. Potom bude postup:

Create  PROCEDURE GetStudentName 
(
@employeeID INT,                       --Input parameter ,  employeID of the employee
@employeName VARCHAR(50)  OUT  --Output parameter, employeeName of employee
AS
BEGIN
SELECT @employeName= Firstname+' '+Lastname FROM Employee_Table WHERE EmployeId=@employeID
END

Kroky k provedení:

  • Deklarujte @employeName jako nvarchar(50)
  • EXEC GetStudentName 01, výstup @employeName
  • vyberte @employeName

Výše uvedený postup zadávání ID zaměstnance jako vstupu vrací jméno konkrétního zaměstnance. Předpokládejme, že pokud máme výstupní parametr, musíme nejprve deklarovat proměnnou, abychom shromáždili výstupní hodnoty. Nyní se podívejme na výhody procedury v SQL.

Výhody procedur v SQL

Hlavním účelem uložených procedur v SQL je skrýt přímé dotazy SQL před kódem a zlepšit výkon databázových operací, jako je výběr, aktualizace a mazání dat. Další výhody procedury v SQL jsou:

  • Snižuje množství informací odesílaných na databázový server. Může se stát důležitější výhodou, když je šířka pásma sítě menší.
  • Umožňuje opětovné použití kódu
  • Vylepšuje zabezpečení, protože můžete uživateli udělit oprávnění ke spuštění uložené procedury namísto udělení oprávnění pro tabulky používané v uložené proceduře.
  • Podporujte vnořená volání procedur jiných SQL procedur nebo procedur implementovaných v jiných jazycích.

Abych to uzavřel, procedury v SQL (uložené procedury) nejen zvyšují možnost opětovného použití kódu, ale také zvyšují výkon databáze. Jak? Snížením provozu sítě snížením množství informací odesílaných přes síť. Tím jsme se dostali na konec tohoto článku.

Pokud se chcete dozvědět více o MySQL a poznat tuto relační databázi s otevřeným zdrojovým kódem, podívejte se na naše školení certifikace MySQL DBA který přichází s instruktorem vedeným živým školením a reálnými zkušenostmi z projektů. Toto školení vám pomůže porozumět MySQL do hloubky a pomůže vám dosáhnout zvládnutí tohoto předmětu.

Máte na nás otázku? Uveďte to prosím v sekci komentářů tohoto ‚Postupy v SQL; článku a my se vám ozveme.


  1. SQL Server - Auto-inkrementace, která umožňuje příkazy UPDATE

  2. Proč MySQL nepodporuje přesnost na milisekundu / mikrosekundu?

  3. Vesmírné tipy

  4. Jedinečný klíč v Oracle s příklady