V dnešním světě se Uložená procedura stalo tématem velkého významu a zájmu všech typů lidí. Ať už kvůli svému dopadu na společnost, historickému významu nebo významu ve vědecké oblasti, Uložená procedura je tématem, které vzbuzuje zvědavost a diskuse v různých odvětvích. V průběhu historie byl Uložená procedura předmětem studia a výzkumu, který generoval velké množství znalostí, které jsou dodnes zkoumány a zpochybňovány. Proto je velmi zajímavé ponořit se do různých aspektů, které Uložená procedura pokrývá, od jeho počátků až po jeho důsledky v každodenním životě.
Uložená procedura (anglicky stored procedure) je databázový objekt, který neobsahuje data, ale část programu, který se nad daty v databázi má vykonávat.
Uložená procedura je především procedura. Jedná se o část programu, který je (nebo by alespoň měl být) jasně funkčně oddělený od svého okolí, má interface (seznam parametrů) pro komunikaci s jinými moduly programu. Může mít vlastní lokální proměnné neviditelné pro ostatní části programu.
Uložená procedura je uložená (rozuměj: uložená v databázi). To znamená, že se k ní lze chovat stejně jako ke každému jinému objektu databáze (indexu, pohledu, triggeru apod.). Lze jí založit, upravovat a smazat pomocí příkazů dotazovacího jazyka databáze (v případě relační databáze obvykle pomocí příkazů DDL SQL). Deklarace uložené procedury je vždy „uložena“ v databázi - vlastní definice pak v databázi být uložena nemusí - příkladem jsou tzv. externí procedury, kdy v deklaraci je uveden pouze odkaz do externí knihovny.
Pro psaní uložených procedur je obvykle používán specifický jazyk konkrétní databáze, který je buďto rozšířením jejího dotazovacího jazyka (např. T-SQL) nebo specifický procedurální jazyk s podporou SQL (hezkým příkladem je pro databázi Oracle procedurální jazyk PL/SQL - v tomto případě se jedná o programovací jazyk ADA rozšířený o SQL). ANSI SQL obsahuje část věnovanou uloženým procedurám - definuje programovací jazyk SQL/PSM, který je např. použit v SQL serverech DB2 nebo MySQL. Většina moderních databázových systémů podporuje implementaci uložených procedur i v klasických programovacích jazycích - Java, C#, C a dalších - a to v těch případech, kdy nám specifické jazyky z důvodů omezené funkčnosti nebo výkonu nevyhovují.
Oproti obvyklejšímu přístupu, kdy s daty pracuje přímo vlastní aplikace přistupující k databázi prostřednictvím SQL, uložené procedury jsou vykonávány přímo databázovým serverem. To může být v mnoha situacích velmi výhodné:
SELECT
), upravit je do požadované podoby a poté je uložit zpět do databáze (typicky jedním nebo více příkazy UPDATE
a INSERT
). Uložená procedura v takovém případě může ušetřit přenosy dat mezi databázovým serverem a aplikací v obou směrech. Zejména v případě, že aplikace běží na jiném počítači než databáze, může být rozdíl v čase a v zatížení sítě markantní.