Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Existuje řada výhod použití procedur, a to vše na základě skutečnosti, že použití procedur přesouvá příkazy SQL z aplikace do zdroje dat. To, co zbývá v aplikaci, je interoperabilní volání procedury. Mezi tyto výhody patří:
Výkon Procedury jsou obvykle nejrychlejší způsob, jak spouštět příkazy SQL. Podobně jako připravené vykonání se výrok ve dvou samostatných krocích zkompiluje a poté vykoná. Na rozdíl od připraveného spuštění jsou procedury spouštěné pouze za běhu. Kompilují se v jiném okamžiku.
Obchodní pravidlaObchodní pravidlo je pravidlo o způsobu, jakým společnost podniká. Například může být povoleno přidávat nové prodejní objednávky jenom někdo s názvem Prodejce. Umístění těchto pravidel do postupů umožňuje jednotlivým společnostem přizpůsobit vertikální aplikace přepsáním procedur, které aplikace volá, aniž by musely upravovat kód aplikace. Například aplikace pro zadávání objednávek může volat proceduru InsertOrder s pevným počtem parametrů; Způsob implementace InsertOrder se může lišit od společnosti po společnost.
Nahraditelnost Úzce souvisí s umístěním obchodních pravidel do postupů skutečnost, že postupy lze nahradit bez opětovného zkompilování aplikace. Pokud se obchodní pravidlo změní po zakoupení a instalaci aplikace, může společnost změnit postup obsahující toto pravidlo. Z hlediska aplikace se nic nezměnilo; stále volá konkrétní postup pro provedení konkrétní úlohy.
SQL specifické pro DBMS Postupy poskytují způsob, jak aplikace zneužít SQL specifické pro DBMS a stále zůstávají interoperabilní. Například procedura v DBMS, která podporuje příkazy řízení toku v SQL, může vystihot a zotavit se z chyb, zatímco procedura v DBMS, která nepodporuje příkazy řízení toku, může jednoduše vrátit chybu.
Procedury přežijí transakce U některých zdrojů dat se plány přístupu pro všechny připravené příkazy v připojení odstraní, když se transakce potvrdí nebo vrátí zpět. Umístěním příkazů SQL do procedur, které jsou trvale uloženy ve zdroji dat, příkazy přežijí transakci. Zda postupy přežijí v připraveném, částečně připraveném nebo nepřipraveném stavu, jsou specifické pro DBMS.
Samostatný vývoj Postupy lze vyvíjet odděleně od zbytku aplikace. Ve velkých společnostech to může poskytnout způsob, jak dále využívat dovednosti vysoce specializovaných programátorů. Jinými slovy, programátoři aplikací mohou psát kód uživatelského rozhraní a programátoři databází mohou psát procedury.
Procedury se obvykle používají ve svislých a vlastních aplikacích. Tyto aplikace mají tendenci provádět pevné úlohy a je možné v nich pevně zakódovat volání procedur. Například aplikace pro zadávání objednávek může volat procedury InsertOrder, DeleteOrder, UpdateOrder a GetOrders.
Existuje malý důvod volat procedury z obecných aplikací. Procedury se obvykle zapisují tak, aby prováděly úlohu v kontextu konkrétní aplikace, a proto se nepoužívají k obecným aplikacím. Například tabulka nemá důvod volat proceduru InsertOrder právě zmíněn. Kromě toho by obecné aplikace neměly za běhu vytvářet procedury v naději, že zajistí rychlejší provádění příkazů; To pravděpodobně bude pomalejší než připravené nebo přímé spuštění, vyžaduje také příkazy SQL specifické pro DBMS.
Výjimkou je prostředí pro vývoj aplikací, která často poskytují programátorům možnost vytvářet příkazy SQL, které provádějí procedury a mohou programátorům poskytnout způsob testování procedur. Taková prostředí volají SQLProcedures k výpisu dostupných procedur a sqlProcedureColumns pro výpis vstupu, vstupu/výstupu a výstupních parametrů, návratové hodnoty procedury a sloupců všech sad výsledků vytvořených procedurou. Tyto postupy však musí být vyvinuty předem pro každý zdroj dat; vyžaduje příkazy SQL specifické pro DBMS.
Používání postupů má tři hlavní nevýhody. První je, že procedury musí být zapsány a kompilovány pro každý DBMS, se kterým má aplikace běžet. I když to není problém pro vlastní aplikace, může výrazně zvýšit dobu vývoje a údržby pro vertikální aplikace navržené tak, aby běžely s řadou dbMS.
Druhou nevýhodou je, že mnoho systémů DBMS nepodporuje postupy. Toto je pravděpodobně problém pro vertikální aplikace navržené tak, aby běžely s řadou dbMS. Chcete-li zjistit, zda jsou procedury podporovány, aplikace volá SQLGetInfo s možností SQL_PROCEDURES.
Třetí nevýhodou, která se týká zejména vývojových prostředí aplikací, je, že odbc nedefinuje standardní gramatiku pro vytváření procedur. To znamená, že ačkoli mohou aplikace postupy interoperačně volat, nemohou je interoperačně vytvářet.