18. Prßce s ulo╛en²mi procedurami

Tato kapitola popisuje jak pou╛φvat ulo╛enΘ procedury v na╣φ databßzovΘ aplikaci. Ulo╛enΘ procedury jsou programy zapsanΘ v jazyku procedur a spou╣t∞Φ∙, kter² je specifick² pro pou╛it² databßzov² systΘm. Jsou dva zßkladnφ typy ulo╛en²ch procedur. Prvnφ typ zφskßvß data (podobn∞ jako dotaz SELECT). Zφskanß data mohou b²t ve tvaru datovΘ mno╛iny obsahujφcφ jeden nebo vφce °ßdk∙ dat, rozd∞len²ch do jednoho nebo vφce sloupc∙. Nebo zφskanß data mohou mφt formu individußlnφch prvk∙ informacφ. Druh² typ nevracφ data, ale provßdφ akci na ulo╛en²ch datech v databßzi (nap°. jako p°φkaz DELETE). N∞kterΘ databßzovΘ servery podporujφ oba typy operacφ ve stejnΘ procedu°e.
Ulo╛enΘ procedury, kterΘ vracejφ data to d∞lajφ r∙zn²m zp∙sobem, zßvisejφcφm na slo╛enφ ulo╛enΘ procedury a pou╛itΘm databßzovΘm systΘmu. N∞kterΘ databßze jako InterBase vracejφ v╣echna data (datovΘ mno╛iny a individußlnφ prvky informacφ) v²luΦn∞ v²stupnφmi parametry. Ostatnφ majφ schopnost vrßtit kurzor do dat. A zb²vajφcφ, jako MS SQL Server nebo Sybase mohou vracet datovΘ mno╛iny a individußlnφ prvky informacφ.
V aplikacφch C++ Builderu, p°φstup k ulo╛en²m procedurßm je poskytnut komponentami TStoredProc a TQuery. Kterou z nich m∙╛eme pou╛φt pro p°φstup, je urΦeno zp∙sobem k≤dovßnφ ulo╛enΘ procedury, zp∙sobem nßvratu dat (jsou-li n∞jakß data vraceny) a pou╛it²m databßzov²m systΘmem. Komponenty TStoredProc a TQuery jsou potomky TDataSet a d∞dφ tedy od n∞j zßkladnφ chovßnφ.
Komponenta ulo╛enΘ procedury je pou╛φvßna k provedenφ ulo╛enΘ procedury, kterß nevracφ ╛ßdnß data, k zφskßnφ individußlnφch prvk∙ informacφ ve form∞ v²stupnφch parametr∙ nebo k p°enesenφ vrßcenΘ datovΘ mno╛iny na p°i°azenou komponentu datovΘho zdroje (zßvisφ na databßzi). Komponenta ulo╛enΘ procedury umo╛≥uje p°edßvat hodnoty do a vracet z ulo╛enΘ procedury prost°ednictvφm parametr∙, kde ka╛d² parametr je definovßn ve vlastnosti Params. Komponenta ulo╛enΘ procedury takΘ poskytuje metodu GetResults k donucenφ ulo╛enΘ proceduru k nßvratu datovΘ mno╛iny (n∞kterΘ databßzovΘ servery toto vy╛adujφ p°ed vytvo°enφm v²sledkovΘ mno╛iny). Komponenta ulo╛enΘ procedury je preferovßna pro ulo╛enΘ procedury, kterΘ nevracejφ ╛ßdnß data nebo vracejφ data pouze pomocφ v²stupnφch parametr∙.
Komponenta dotazu je hlavn∞ pou╛φvßna pro spou╣t∞nφ ulo╛en²ch procedur, kterΘ vracejφ datovΘ mno╛iny. To zahrnuje ulo╛enΘ procedury InterBase, kterΘ vracejφ datovΘ mno╛iny pouze prost°ednictvφm v²stupnφch parametr∙. Komponenta dotazu m∙╛e b²t takΘ pou╛ita k provßd∞nφ ulo╛en²ch procedur, kterΘ nevracejφ v²sledkovΘ mno╛iny nebo hodnoty v²stupnφch parametr∙.
Parametry pou╛φvßme k p°edßvßnφ hodnot do a k nßvratu hodnot z ulo╛en²ch procedur. Hodnoty vstupnφch parametr∙ jsou pou╛ity na mφstech jako je klauzule WHERE p°φkazu SELECT v ulo╛enΘ procedu°e. V²stupnφ parametry umo╛≥ujφ ulo╛enΘ procedu°e p°edßvat samostatnΘ hodnoty volajφcφ aplikaci. N∞kterΘ ulo╛enΘ procedury vracejφ parametr result. Na mo╛nosti ulo╛en²ch procedur se musφme podφvat na dokumentaci na╣eho databßzovΘho serveru.
V tΘto kapitole budou popsßny nßsledujφcφ body:

Kdy je pot°eba pou╛φt ulo╛enou proceduru?

Pokud nß╣ server umo╛≥uje definovat ulo╛enΘ procedury, pak je vhodnΘ v na╣φ aplikaci je pou╛φvat. V²vojß° databßzovΘho serveru vytvß°φ ulo╛enΘ procedury ke zpracovßnφ Φasto provßd∞n²ch ·loh v databßzi. Jsou vhodnΘ k provßd∞nφ operacφ nad znaΦn∞ velk²m poΦtem °ßdk∙ v databßzov²ch tabulkßch nebo kdy╛ pou╛φvajφ agregaΦnφ nebo matematickΘ funkce. Pokud ulo╛enΘ procedury existujφ na vzdßlenΘm databßzovΘm serveru pou╛φvan²m na╣φ aplikacφ, pak m∙╛eme pou╛φt jejich v²hody ve svΘ aplikaci. Vyu╛ijeme funkΦnost jimi poskytnutou a zv²╣φme v²konnost na╣φ databßze: Nap°. p°edpoklßdejme aplikaci, kterß pot°ebuje vypoΦφtat jedinou hodnotu a to standardnφ odchylku hodnot ze znaΦn∞ velkΘho mno╛stvφ zßznam∙. K provedenφ tΘto funkce v na╣φ aplikaci, musφme v╣echny hodnoty pou╛itΘ ve v²poΦtu zφskat ze serveru, co╛ m∙╛e znaΦn∞ zv²╣it zßt∞╛ sφt∞. Potom na╣e aplikace musφ provΘst v²poΦet. V╣e prob∞hne v na╣i aplikaci a v²sledkem je jedinß hodnota. Mnohem v²hodn∞j╣φ je provΘst v²poΦet ulo╛enou proceduru (v²poΦty prob∞hnou na serveru, co╛ m∙╛e b²t v²konn∞j╣φ poΦφtaΦ a potom sφtφ staΦφ p°enΘst jedinou hodnotu).

Pou╛φvßnφ ulo╛en²ch procedur

Jak ulo╛enß procedura je pou╛ita v aplikaci C++ Builderu zßvisφ na k≤dovßnφ ulo╛enΘ procedury, zda a jak vracφ data, specifikßch pou╛itΘho databßzovΘho serveru nebo kombinaci t∞chto faktor∙.
V obecn²ch termφnech, pro p°φstup k ulo╛enΘ procedu°e na serveru, provedeme kroky:
  1. Instantizujeme komponentu TStoredProc a voliteln∞ p°i°adφme k ulo╛enΘ procedu°e na serveru. Nebo instantizujeme komponentu TQuery a vytvo°φme obsah jejφ vlastnosti SQL k provedenφ dotazu SELECT tvo°φcφho ulo╛enou proceduru nebo p°φkazu EXECUTE v zßvislosti na tom, zda ulo╛enß procedura vracφ v²sledkovou mno╛inu.
  2. V p°φpad∞ pot°eby poskytneme komponent∞ ulo╛enΘ procedury hodnoty vstupnφch parametru. Kdy╛ komponenta ulo╛enΘ procedury nenφ p°i°azenß k ulo╛enΘ procedu°e na serveru, pak musφme poskytnout dal╣φ informace vstupnφm parametr∙m, jako je jmΘno parametru a datovΘ typy.
  3. Provedenφ ulo╛enΘ procedury.
Nynφ ji╛ m∙╛eme zpracovat v²sledek a v²stupnφ parametry. Jako u jin²ch komponent datov²ch mno╛in, m∙╛eme takΘ zkoumat v²sledkovou datovou mno╛inu ze serveru. Detailnφ aspekty pou╛φvßnφ ulo╛en²ch procedur zahrnujφ:
Vytvß°enφ komponenty ulo╛enΘ procedury
K vytvo°enφ komponenty ulo╛enΘ procedury pro ulo╛enou proceduru na databßzovΘm serveru:
  1. Umφstφme komponentu ulo╛enΘ procedury ze strßnky Data Access Palety komponent do datovΘho modulu.
  2. Voliteln∞ nastavφme vlastnost DatabaseName komponenty ulo╛enΘ procedury na jmΘno databßze, ve kterΘ je ulo╛enß procedura definovßna. DatabaseName musφ b²t p°ezdφvka BDE nebo stejnß hodnota jako ve vlastnosti DatabaseName komponenty TDatabase, kterß se m∙╛e p°ipojit k serveru.

  3. Normßln∞ specifikujeme vlastnost DatabaseName, ale pokud server databßze je prßv∞ nedostupn², pak m∙╛eme vytvo°it a nastavit komponentu ulo╛enΘ procedury s vynechßnφm DatabaseName a p°edßnφm jmΘna ulo╛enΘ procedury a vstupnφch, v²stupnφch a v²sledkov²ch parametr∙ p°i nßvrhu.
  4. Voliteln∞ nastavφme vlastnost StoredProcName na jmΘno pou╛itΘ ulo╛enΘ procedury. Pokud poskytneme hodnotu pro vlastnost DatabaseName, pak m∙╛eme vybrat jmΘno ulo╛enΘ procedury z rozbalovacφho seznamu vlastnosti. Jedna komponenta TStoredProc m∙╛e b²t pou╛ita ke spu╣t∞nφ libovolnΘho poΦtu ulo╛en²ch procedur nastavenφm vlastnosti StoredProcName na p°φpustnΘ jmΘno v aplikaci. Nenφ tedy nutno nastavovat StoredProcName p°i nßvrhu.
  5. Dvojit²m kliknutφm ve sloupci hodnot vlastnosti Params vyvolßme Editor parametr∙ ulo╛en²ch procedur ke zkoumßnφ vstupnφch a v²stupnφch parametr∙ pro ulo╛enou proceduru. Pokud nespecifikujeme jmΘno pro ulo╛enou proceduru ve t°etφm kroku, nebo specifikujeme jmΘno pro ulo╛enou proceduru, kterß neexistuje na serveru urΦenΘm vlastnostφ DatabaseName (zadanou v kroku 2), pak po vyvolßnφ editoru parametr∙, editor je prßzdn².
Ne v╣echny servery vracejφ parametry nebo informace o parametrech. Podφvejte se do dokumentace va╣eho serveru k urΦenφ zda informace o sv²ch ulo╛en²ch procedurßch jsou vraceny klientsk²m aplikacφm.
Poznßmka: Pokud nespecifikujeme v kroku 2 vlastnost DatabaseName, pak musφme pou╛φt Editor parametr∙ ulo╛en²ch procedur k nastavenφ parametr∙ p°i nßvrhu.
Vytvß°enφ ulo╛en²ch procedur
Normßln∞, ulo╛enΘ procedury jsou vytvß°eny, kdy╛ je vytvß°ena aplikace a jejφ databßze, pomocφ nßstroj∙ dodan²ch v²robcem databßze. Je ale takΘ mo╛nΘ vytvß°et ulo╛enΘ procedury za b∞hu. P°φkaz SQL pou╛it² k vytvo°enφ ulo╛enΘ procedury se m∙╛e na r∙zn²ch databßzφch znaΦn∞ li╣it. Je pot°eba se podφvat do dokumentace na╣eho databßzovΘho systΘmu.
Ulo╛enΘ procedury mohou b²t aplikacφ vytvß°eny za b∞hu pomocφ p°φkazu SQL z komponenty TQuery (obvykle p°φkazu CREATE PROCEDURE). Pokud ulo╛enß procedura pou╛φvß parametry, pak nastavφme vlastnost ParamCheck komponenty TQuery na false. To chrßnφ TQuery v rozli╣enφ parametr∙ v novΘ ulo╛enΘ procedu°e od parametr∙ z TQuery samotnΘho.
Poznßmka: M∙╛eme takΘ pou╛φt Pr∙zkumnφka SQL k testovßnφ, editaci a vytvß°enφ ulo╛en²ch procedur na serveru.
P°φprava a provßd∞nφ ulo╛en²ch procedur
K pou╛itφ ulo╛enΘ procedury, ji m∙╛eme voliteln∞ p°ipravit a potom ji provΘst. Ulo╛enou proceduru m∙╛eme p°ipravit: Nap°. Nßsledujφcφ k≤d p°ipravuje ulo╛enou proceduru pro provßd∞nφ:
StoredProc1->Prepare();
Poznßmka: Pokud na╣e aplikace m∞nφ za b∞hu informace o parametrech (nap°. p°i pou╛itφ p°etφ╛en²ch procedur Oracle), pak musφme proceduru p°ipravit znova.
K spu╣t∞nφ p°ipravenΘ ulo╛enΘ procedury, volßme metodu ExecProc pro komponentu ulo╛enΘ procedury. Nßsledujφcφ k≤d ukazuje k≤d p°ipravujφcφ a provßd∞jφcφ ulo╛enou proceduru.
StoredProc1->Params->Items[0]->AsString = Edit1->Text;
StoredProc1->Prepare();
StoredProc1->ExecProc();
Poznßmka: Pokud se pokusφme provΘst ulo╛enou proceduru p°ed jejφm p°ipravenφm, pak komponenta ulo╛enΘ procedury je p°ipravena automaticky a potom po provedenφ je jejφ p°φprava zru╣ena. Pokud plßnujeme n∞kolikanßsobnΘ provßd∞nφ ulo╛enΘ procedury, pak je mnohem efektivn∞j╣φ explicitnφ volßnφ Prepare a potom, kdy╛ ji╛ procedura nebude nadßle pot°eba, volßnφ UnPrepare.
Kdy╛ provedeme ulo╛enou proceduru, pak m∙╛e vracet v╣echny nebo n∞kterΘ z t∞chto prvk∙: K urΦenφ oΦekßvan²ch vracen²ch prvk∙ z ulo╛enΘ procedury na na╣em serveru, se musφme podφvat do dokumentace serveru.
Ulo╛enΘ procedury, kterΘ vracejφ v²sledkovou mno╛inu
Ulo╛enΘ procedury, kterΘ vracejφ data v datov²ch mno╛inßch, °ßdcφch a sloupcφch dat, mohou b²t Φasto pou╛φvßny komponentou dotazu. NicmΘn∞, s databßzov²m serverem, kter² podporuje nßvrat datovΘ mno╛iny ulo╛enou procedurou, m∙╛e b²t komponenta datovΘ mno╛iny pou╛ita i k tomuto ·Φelu.

Nßvrat v²sledkovΘ mno╛iny pomocφ TQurey
K zφskßnφ datovΘ mno╛iny z ulo╛enΘ procedury pomocφ komponenty TQuery:

  1. Instantizujeme komponentu dotazu.
  2. Do vlastnosti TQuery::SQL zapφ╣eme dotaz SELECT, kter² pou╛ije jmΘno ulo╛enΘ procedury mφsto jmΘna tabulky.
  3. Pokud ulo╛enß procedura vy╛aduje vstupnφ parametry, p°edßme hodnoty parametr∙ jako Φßrkami odd∞lovan² seznam, uzav°en² v zßvorkßch, nßsledovan² za jmΘnem procedury.
  4. Nastavφme vlastnost Active na true nebo vyvolßme metodu Open.
Nap°. ulo╛enß procedura InterBase GET_EMP_PROJ, akceptuje hodnotu pomocφ vstupnφho parametru EMP_NO a vracφ datovou mno╛inu prost°ednictvφm v²stupnφho parametru PROJ_ID.
CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT)
RETURNS (PROJ_ID CHAR(5))
AS
BEGIN
  FOR SELECT PROJ_ID
  FROM EMPLOYEE_PROJECT
  WHERE EMP_NO = :EMP_NO
  INTO :PROJ_ID
  DO
    SUSPEND;
END
P°φkaz SQL pou╛it² z komponenty dotazu k pou╛itφ tΘto ulo╛enΘ procedury bude:
SELECT *
FROM GET_EMP_PROJ(52)

Nßvrat v²sledkovΘ mno╛iny pomocφ TStoredProc
K zφskßnφ datovΘ mno╛iny z ulo╛enΘ procedury pomocφ komponenty TStoredProc:

  1. Instantizujeme komponentu ulo╛enΘ procedury.
  2. Ve vlastnosti StoredProcName specifikujeme jmΘno ulo╛enΘ procedury.
  3. Pokud ulo╛enß procedura vy╛aduje vstupnφ parametry, pak p°edßme hodnoty pro parametry pomocφ vlastnosti Params nebo metodou ParamByName.
  4. Nastavφme vlastnost Active na true nebo vyvolßme metodu Open.
Nap°. ulo╛enß procedura Sybase GET_EMPLOYEES, akceptuje parametr nazvan² @EMP_NO a vracφ v²sledkovou mno╛inu na zßklad∞ tΘto hodnoty.
CREATE PROCEDURE GET_EMPLOYEES @EMP_NO SMALLINT
AS SELECT EMP_NAME, EMPLOYEE_NO FROM EMPLOYEE_TABLE
WHERE (EMPLOYEE_NO = @EMP_NO)
K≤d C++ Builderu k napln∞nφ parametru hodnotou a aktivovßnφ komponenty ulo╛enΘ procedury je:
StoredProc1->Close();
StoredProc1->ParamByName("EMP_NO")->AsSmallInt = 52;
StoredProc1->Active = true;
Ulo╛enΘ procedury, kterΘ vracejφ data pomocφ parametr∙
Ulo╛enΘ procedury mohou b²t urΦeny k zφskßvßnφ jednotliv²ch prvk∙ informacφ pomocφ parametr∙, mφsto k zφskßvßnφ cel²ch °ßdk∙ dat. Nap°. ulo╛enß procedura m∙╛e zφskßvat maximßlnφ hodnotu sloupce, k tΘto hodnot∞ p°iΦφst 1 a potom vrßtit tuto hodnotu aplikaci. To lze op∞t provßd∞t komponentami TQuery a TStoredProc. Preferovanou metodou pro zφskßvßnφ hodnot parametr∙ je pou╛itφ TStoredProc.

Zφskßvßnφ individußlnφch hodnot pomocφ TQuery
Hodnoty parametr∙ zφskan²ch prost°ednictvφm komponenty TQuery p°ebφrßme ve form∞ jednoho °ßdku datovΘ mno╛iny, a to i kdy╛ ulo╛enß procedura vracφ jedin² parametr. K zφskßnφ jednotliv²ch hodnot z parametru ulo╛enΘ procedury pomocφ komponenty TQuery:

  1. Instantizujeme komponentu dotazu.
  2. Do vlastnosti TQuery::SQL zapφ╣eme dotaz SELECT, kter² pou╛φvß jmΘno ulo╛enΘ procedury namφsto jmΘna tabulky. Klauzule SELECT tohoto dotazu m∙╛e specifikovat jmΘna parametr∙ jako jmΘna sloupc∙ v tabulce nebo m∙╛e jednodu╣e pou╛φt * k zφskßnφ v╣ech hodnot parametr∙.
  3. Pokud ulo╛enß procedura vy╛aduje vstupnφ parametry, pak p°edßme seznam hodnot parametr∙ odd∞len² Φßrkami a uzav°en² v zßvorkßch za jmΘno procedury.
  4. Nastavφme vlastnost Active na true nebo vyvolßme metodu Open.
Nap°. ulo╛enß procedura GET_HIGH_EMP_NAME z InterBase, zφskßvß abecedn∞ poslednφ hodnotu ve sloupci LAST_NAME z tabulky nazvanΘ EMPLOYEE. Ulo╛enß procedura vracφ tuto hodnotu ve v²stupnφm parametru High_Last_Name.
CREATE PROCEDURE GET_HIGH_EMP_NAME
RETURNS (High_Last_Name CHAR(15))
AS
BEGIN
  SELECT MAX(LAST_NAME)
  FROM EMPLOYEE
  INTO :High_Last_Name;
  SUSPEND;
END
P°φkaz SQL pou╛it² z TQuery k pou╛itφ tΘto ulo╛enΘ procedury m∙╛e b²t:
SELECT High_Last_Name
FROM GET_HIGH_EMP_NAME

Zφskßvßnφ jednotliv²ch hodnot pomocφ TStoredProc
K zφskßnφ individußlnφch hodnot v²stupnφch parametr∙ z ulo╛enΘ procedury pomocφ komponenty TStoredProc:

  1. Instantizujeme komponentu ulo╛enΘ procedury.
  2. Ve vlastnosti StoredProcName specifikujeme jmΘno ulo╛enΘ procedury.
  3. Pokud ulo╛enß procedura vy╛aduje vstupnφ parametry, pak p°edßme hodnoty pro parametry pomocφ vlastnosti Params nebo metodou ParamByName.
  4. Vyvolßme metodu ExecProc.
  5. Pou╛ijeme hodnoty jednotliv²ch v²stupnφch parametr∙ pomocφ vlastnosti Params nebo metodou ParamByName.
Nap°. ulo╛enß procedura GET_HIGH_EMP_NAME z InterBase, zφskßvß abecedn∞ poslednφ hodnotu ve sloupci LAST_NAME z tabulky nazvanΘ EMPLOYEE. Ulo╛enß procedura vracφ tuto hodnotu ve v²stupnφm parametru High_Last_Name.
CREATE PROCEDURE GET_HIGH_EMP_NAME
RETURNS (High_Last_Name CHAR(15))
AS
BEGIN
  SELECT MAX(LAST_NAME)
  FROM EMPLOYEE
  INTO :High_Last_Name;
  SUSPEND;
END
K≤d C++ Builderu k zφskßnφ hodnoty v²stupnφho parametru High_Last_Name a ulo╛it ji do vlastnosti Text editaΦnφ komponenty:
StoredProc1->StoredProName = "GET_HIGH_EMP_NAME";
StoredProc1->ExecProc();
Edit1->Text = StoredProc1->ParamByName("High_Last_Name")->AsString;
Ulo╛enΘ procedury provßd∞jφcφ akce na datech
Ulo╛enΘ procedury mohou b²t k≤dovßny tak, ╛e nevracejφ ╛ßdnß data a pouze provßd∞jφ n∞jakou akci v databßzi. Operace SQL vyvolßvajφcφ p°φkazy INSERT a DELETE jsou dobr²m p°φkladem tohoto typu ulo╛en²ch procedur. Nap°. mφsto umo╛n∞nφ u╛ivateli p°φmo zru╣it °ßdek, m∙╛eme k tomu pou╛φt ulo╛enou proceduru. To umo╛≥uje ulo╛enΘ procedu°e urΦovat co zru╣it a takΘ zpracovßvat aspekty referenΦnφ integrity, jako je kaskßdovitΘ ru╣enφ °ßdk∙ v zßvisl²ch tabulkßch.

Provßd∞nφ akΦnφch ulo╛en²ch procedur pomocφ TQuery
K provedenφ akΦnφch ulo╛en²ch procedur pomocφ komponenty TQuery:

  1. Instantizujeme komponentu dotazu.
  2. Do vlastnosti TQuery::SQL vlo╛φme p°φkaz nutn² k provedenφ ulo╛enΘ procedury a jmΘno ulo╛enΘ procedury. P°φkaz k provedenφ ulo╛enΘ procedury se m∙╛e v r∙zn²ch databßzov²ch systΘmech znaΦn∞ li╣it. V InterBase je to nap°. p°φkaz EXECUTE PROCEDURE.
  3. Pokud ulo╛enß procedura vy╛aduje vstupnφ parametry, p°edßme hodnoty parametr∙ jako Φßrkami odd∞len² seznam a zapφ╣eme jej do zßvorek za jmΘno procedury.
  4. Vyvolßme metodu TQuery::ExecSQL.
Nap°. ulo╛enß procedura ADD_EMP_PROJ z InterBase p°idßvß nov² °ßdek do tabulky EMPLOYEE_PROJECT. Nenφ vrßcenß ╛ßdnß datovß mno╛ina nebo jednotlivΘ hodnoty ve v²stupnφch parametrech:
CREATE PROCEDURE ADD_EMP_PROJ (EMP_NO SMALLINT, PROJ_ID CHAR(5)) AS
BEGIN
  BEGIN
    INSERT INTO EMPLOYEE_PROJECT (EMP_NO, PROJ_ID)
    VALUES (:EMP_NO, :PROJ_ID);
    WHEN SQLCODE -530 DO
      EXCEPTION UNKNOWN_EMP_ID;
  END
  SUSPEND;
END
P°φkaz SQL vyvolan² z TQuery k provedenφ tΘto procedury m∙╛e b²t:
EXECUTE PROCEDURE ADD_EMP_PROJ(20, "GUIDE")

Provedenφ akΦnφ ulo╛enΘ procedury pomocφ TStoredProc
K provedenφ akcφ ulo╛enΘ procedury pomocφ TStoredProc:

  1. Instantizujeme komponentu ulo╛enΘ procedury.
  2. Ve vlastnosti StoredProcName specifikujeme jmΘno ulo╛enΘ procedury.
  3. Pokud ulo╛enß procedura vy╛aduje vstupnφ parametry, p°edßme hodnoty parametr∙ pomocφ vlastnosti Params nebo metodou ParamByName.
  4. Vyvolßme metodu ExecProc.
Nap°. ulo╛enß procedura ADD_EMP_PROJ z InterBase p°idßvß nov² °ßdek do tabulky EMPLOYEE_PROJECT. Nenφ vrßcenß ╛ßdnß datovß mno╛ina nebo jednotlivΘ hodnoty ve v²stupnφch parametrech:
CREATE PROCEDURE ADD_EMP_PROJ (EMP_NO SMALLINT, PROJ_ID CHAR(5)) AS
BEGIN
  BEGIN
    INSERT INTO EMPLOYEE_PROJECT (EMP_NO, PROJ_ID)
    VALUES (:EMP_NO, :PROJ_ID);
    WHEN SQLCODE -530 DO
      EXCEPTION UNKNOWN_EMP_ID;
  END
  SUSPEND;
END
K≤d C++ Builderu k provedenφ ulo╛enΘ procedury ADD_EMP_PROJ je:
StoredProc1->StoredProcName = "ADD_EMP_PROJ";
StoredProc1->ExecProc;

Seznßmenφ s parametry ulo╛en²ch procedur

Jsou Φty°i typy parametr∙, kterΘ mohou b²t p°i°azeny k ulo╛en²m procedurßm: Zda ulo╛enß procedura pou╛φvß jist² typ parametr∙ zßvisφ na jazyku implementujφcφm ulo╛enou proceduru na na╣em databßzovΘm serveru a na specifickΘ instanci ulo╛enΘ procedury. Nap°. jistß ulo╛enß procedura na n∞jakΘm serveru m∙╛e b²t implementovßna pomocφ vstupnφch parametr∙ nebo nemusφ. Na druhΘ stran∞, n∞kterΘ pou╛itφ parametr∙ zßvisφ na serveru. Nap°. ulo╛enΘ procedury MS-SQL Server a Sybase v╛dy vracejφ parametr result, ale implementace InterBase jej nevracφ nikdy.
P°φstup k parametr∙m ulo╛en²ch procedur je poskytnut objekty TParam ve vlastnosti TStoredProc::Params. Pokud jmΘno ulo╛enΘ procedury je specifikovßno p°i nßvrhu ve vlastnosti StoredProcName, pak je automaticky vytvo°en pro ka╛d² parametr objekt TParam a p°idßn k vlastnosti Params. Pokud jmΘno ulo╛enΘ procedury nenφ specifikovßno do spu╣t∞nφ, pak objekty TParams musφ b²t vytvo°eny programov∞ po spu╣t∞nφ. Nespecifikovßnφ ulo╛enΘ procedury a manußlnφ vytvß°enφ objekt∙ TParam umo╛≥uje jedna komponenta TStoredProc, kterß m∙╛e b²t pou╛ita s libovoln²m poΦtem dostupn²ch ulo╛en²ch procedur.
Poznßmka: N∞kterΘ ulo╛enΘ procedury vracejφ mimo v²stupnφch a v²sledkov²ch parametr∙ i datovou mno╛inu. Aplikace mohou zobrazovat zßznamy datovΘ mno╛iny v datov²ch ovladaΦφch, ale musφ odd∞len∞ zpracovat v²stupnφ a v²sledkovΘ parametry.
V tΘto Φßsti se budeme zab²vat je╣t∞:
Pou╛φvßnφ vstupnφch parametr∙
Aplikace pou╛φvß vstupnφ parametry k p°edßvßnφ jednotliv²ch datov²ch hodnot ulo╛enΘ procedu°e. Tyto hodnoty jsou pak pou╛ity p°φkazy SQL v ulo╛enΘ procedu°e, jako je porovnßvanß hodnota pro klauzuli WHERE. Pokud ulo╛enß procedura po╛aduje vstupnφ parametr, pak p°i°adφme hodnotu parametru p°ed provedenφm ulo╛enΘ procedury.
Pokud ulo╛enß procedura vracφ datovou mno╛inu a je pou╛ita prost°ednictvφm dotazu SELECT v komponent∞ TQuery, p°edßme hodnoty vstupnφch parametr∙ jako Φßrkami odd∞len² seznam uzav°en² v zßvorkßch, za jmΘnem ulo╛enΘ procedury. Nap°. nßsledujφcφ p°φkaz SQL zφskßvß data z ulo╛enΘ procedury nazvanΘ GET_EMP_PROJ a p°edßvß ji hodnotu vstupnφho parametru 52.
SELECT PROJ_ID
FROM GET_EMP_PROJ(52)
Pokud ulo╛enß procedura je provßd∞na s komponentou TStoredProc, pak pou╛ijeme vlastnost Params nebo metodu ParamByName k nastavenφ ka╛dΘho vstupnφho parametru. Pou╛ijeme vlastnost TParam p°φslu╣ejφcφ pro datov² typ parametru, jako je vlastnost TParam::AsString pro parametr typu CHAR. Nastavφme hodnoty vstupnφch parametr∙ p°ed provedenφm nebo aktivovßnφm komponenty TStoredProc. V nßsledujφcφm p°φkladu, parametr EMP_NO (typu SMALLINT) pro ulo╛enou proceduru GET_EMP_PROJ mß p°i°azenou hodnotu 52.
StoredProc1->ParamByName("EMP_NO")->AsSmallInt = 52;
StoredProc1->ExecProc();
Pou╛φvßnφ v²stupnφch parametr∙
Ulo╛enΘ procedury pou╛φvajφ v²stupnφ parametry k p°edßvßnφ jednotliv²ch hodnot dat zp∞t aplikaci, kterß ulo╛enou proceduru volß. V²stupnφ parametry zφskajφ svΘ hodnoty po provedenφ ulo╛enΘ procedury. V²stupnφ parametry prohlφ╛φme z aplikace k zφskßnφ jejich hodnot, po vyvolßnφ metody TStoredProc::ExecProc.
K odkazovßnφ na objekt TParam, kter² reprezentuje parametr a k prohlΘdnutφ jeho hodnoty pou╛φvßme vlastnost TStoredProc::Params nebo metodu TStoredProc::ParamByName. Nap°. k zφskßnφ hodnoty parametru a ulo╛enφ jeho hodnoty do vlastnosti Text editaΦnφ komponenty pou╛ijeme:
StoredProc1->ExecProc();
Edit1->Text = StoredProc1->Param[0]->AsString;
V∞t╣ina ulo╛en²ch procedur vracφ jeden nebo vφce v²stupnφch parametr∙. V²stupnφ parametry mohou reprezentovat izolovanΘ vracenΘ hodnoty ulo╛enou procedurou, kterß nevracφ datovou mno╛inu, mohou reprezentovat jednu mno╛inu hodnot vrßcenou procedurou, kterß takΘ vracφ datovou mno╛inu nebo mohou reprezentovat hodnoty, kterΘ nemajφ p°φm² vztah k jednotliv²m zßznam∙m datovΘ mno╛iny vracenΘ ulo╛enou procedurou. Ka╛dß serverovß implementace ulo╛emnΘ procedury se v tomto m∙╛e li╣it.
Poznßmka: Zdrojov² k≤d pro ulo╛enΘ procedury Informixu mohou indikovat, ╛e vracejφ v²stupnφ parametry i kdy╛ v Editoru parametr∙  ulo╛enΘ procedury je nemusφme vid∞t. Informix p°eklßdß v²stupnφ parametry do jednoho zßznamu datovΘ mno╛iny, kter² m∙╛eme zobrazit v datov²ch ovladaΦφch aplikace.
Pou╛φvßnφ vstupn∞/v²stupnφch parametr∙
Vstupn∞/v²stupnφ parametry slou╛φ jako vstupnφ i v²stupnφ parametry. Aplikace pou╛ije vstupn∞/v²stupnφ parametry k p°edßnφ jednotliv²ch datov²ch hodnot ulo╛enΘ procedu°e, kterß je op∞tovn∞ pou╛ije k p°edßnφ datov²ch hodnot volajφcφ aplikaci. Jako se vstupnφmi parametry, vstupnφ hodnota pro vstupn∞/v²stupnφ parametr musφ b²t dostupnß p°ed vyvolßnφm ulo╛enΘ procedury.
V p°φkladu ulo╛enΘ procedury Oracle, je parametr IN_OUTVAR vstupn∞/v²stupnφm parametrem:
CREATE OR REPLACE PROCEDURE UPDATE_THE_TABLE (IN_OUTVAR IN OUT INTEGER)
AS
BEGIN
  UPDATE ALLTYPETABLE
  SET NUMBER82FLD = IN_OUTVAR
  WHERE KEYFIELD = 0;
  IN_OUTVAR:=1;
END UPDATE_THE_TABLE;
V k≤du programu v C++ Builderu uvedenΘm dßle, IN_OUTVAR je p°i°azena vstupnφ hodnota, provedena ulo╛enß procedura a pak v²stupnφ hodnota v IN_OUTVAR je ulo╛ena do prom∞nnΘ v pam∞ti.
StoredProc1->ParamByName("IN_OUTVAR")->AsInteger = 103;
StoredProc1->ExecProc();
IntegerVar = StoredProc1->ParamByName("IN_OUTVAR")->AsInteger;
Pou╛φvßnφ v²sledkovΘho parametru
Mimo vracenφ v²stupnφch parametr∙ a datovΘ mno╛iny, n∞kterΘ ulo╛enΘ procedury takΘ vracejφ jeden v²sledkov² parametr. V²sledkov² parametr je obvykle pou╛φvßn k indikaci chybovΘho stavu nebo poΦtu zßznam∙ zpracovan²ch ulo╛enou procedurou. Musφme se podφvat do dokumentace na╣eho serveru, abychom zjistili zda nß╣ server podporuje v²sledkov² parametr. V²sledkovΘmu parametru je p°i°azena hodnota provedenφm ulo╛enΘ procedury. V²sledkov² parametr zkoumßme v aplikaci k zφskßnφ jeho hodnoty po vyvolßnφ metody TStoredProc::ExecProc.
K odkazu na objekt TParam, kter² reprezentuje v²sledkov² parametr a zkoumßnφ jeho hodnoty pou╛ijeme vlastnost TStoredProc::Params nebo metodu TStoredProc::ParamByName.
DateVar = StoredProc1->ParamByName("MyOutputParam")->AsDate;
Zp°φstup≥ovßnφ parametr∙ b∞hem nßvrhu
Pokud se p°ipojφme ke vzdßlenΘmu databßzovΘmu serveru nastavenφm vlastnostφ DatabaseName a StoredProcName p°i nßvrhu, pak m∙╛eme pou╛φvat Editor parametr∙ ulo╛enΘ procedury k zobrazenφ jmen a datov²ch typ∙ ka╛dΘho vstupnφho parametru a m∙╛eme nastavit hodnoty pro vstupnφ parametry k p°edßnφ na server kdy╛ ulo╛enou proceduru provedeme.
D∙le╛itΘ: Nem∞nφme jmΘna nebo datovΘ typy vstupnφch parametr∙ oznßmen²ch serverem nebo p°i provedenφ ulo╛enΘ procedury bude generovßna v²jimka.
N∞kterΘ servery (nap°. Informix) neoznamujφ jmΘna parametr∙ nebo datovΘ typy. V t∞chto p°φpadech pou╛ijeme Pr∙zkumnφk SQL nebo v²robcem serveru dodanΘ utility k prohlΘdnutφ zdrojovΘho k≤du ulo╛enΘ procedury na serveru k urΦenφ vstupnφch parametr∙ a jejich datov²ch typ∙.
Pokud p°i nßvrhu nezφskßme seznam parametr∙ ulo╛enΘ procedury na vzdßlenΘm serveru (nap°. kdy╛ nejsme p°ipojeni k serveru), pak musφme vyvolat Editor parametr∙ ulo╛enΘ procedury, uvΘst zde ka╛d² po╛adovan² vstupnφ parametr a p°i°adit mu datov² typ a hodnotu.

Nastavovßnφ informacφ o parametrech p°i nßvrhu.
M∙╛eme vyvolat Editor parametr∙ ulo╛enΘ procedury p°i nßvrhu k nastavenφ parametr∙ a jejich hodnot. Editor parametr∙ umo╛≥uje nastavovat parametry ulo╛enΘ procedury. Pokud u komponenty TStoredProc nastavφme vlastnosti DatabaseName a StoredProcName p°i nßvrhu, pak existujφcφ parametry jsou uvedeny v Editoru. Pokud tyto vlastnosti nenastavφme, pak v seznamu Editoru nenφ uveden ╛ßdn² parametr a musφme je p°idat manußln∞. Dßle n∞kterΘ typy databßzφ nevracejφ v╣echny informace o parametrech, nap°. typy. Pro tyto databßzovΘ systΘmy, pou╛ijeme Pr∙zkumnφk SQL k prohlΘdnutφ procedur, urΦenφ typ∙ a potom provedeme konfiguraci parametr∙ prost°ednictvφm Editoru a Inspektoru objekt∙. Kroky k nastavenφ parametr∙ ulo╛en²ch procedur p°i nßvrhu jsou tyto:

  1. Nepovinn∞ nastavφme vlastnosti DatabaseName a StoredProcName.
  2. V Inspektoru objekt∙, vyvolßme Editor parametr∙ stisknutφm tlaΦφtka se t°emi teΦkami ve vlastnosti Params.
  3. Pokud vlastnosti DatabaseName a StoredProcName nejsou nastaveny, v seznamu editoru nejsou uvedeny ╛ßdnΘ parametry. Manußln∞ p°idßme definice parametr∙ volbou Add v mφstnφ nabφdce Editoru.
  4. Vybφrßme jednotlivΘ parametry v Editoru k zobrazenφ jejich vlastnostφ v Inspektoru objekt∙.
  5. Jestli╛e ve vlastnosti ParamType nenφ automaticky specifikovßn typ, pak typ parametru (Input, Output, Input/Output nebo Result) vybereme z rozbalovacφho seznamu vlastnosti.
  6. Pokud datov² typ nenφ automaticky specifikovßn ve vlastnosti DataType, pak vybereme datov² typ z rozbalovacφho seznamu vlastnosti. (Pro nßvrat v²sledkovΘ mno╛iny z ulo╛enΘ procedury Oracle nastavφme typ polo╛ky na Cursor.)
  7. Vlastnost Value pou╛ijeme k p°φpadnΘmu nastavenφ poΦßteΦnφ hodnoty pro vstupnφ nebo vstupn∞/v²stupnφ parametry.
Stisknutφm pravΘho tlaΦφtka my╣i nad Editorem vyvolßme mφstnφ nabφdku pro operovßnφ s definicemi parametr∙. V zßvislosti na tom, zda parametry jsou uvedeny nebo vybrßny, povolenΘ volby zahrnujφ: p°idßvßnφ nov²ch parametr∙, ru╣enφ existujφcφch parametr∙, p°esun parametr∙ nahoru a dol∙ v seznamu a v²b∞r v╣ech uveden²ch parametr∙.
M∙╛eme definovat libovoln² p°idan² TParam, ale atributy objektu TParam musφ odpovφdat atribut∙m parametru ulo╛enΘ procedury na serveru. K editaci TParam pro parametr, vybereme parametr v Editoru a editujeme jeho vlastnosti v Inspektoru objekt∙.
Poznßmka: Sybase, MS-SQL a Informix nevracejφ informace o typu parametr∙. K zji╣t∞nφ t∞chto informacφ pou╛ijeme Pr∙zkumnφk SQL.
Poznßmka: Informix nevracφ informace o datov²ch typech. K zji╣t∞nφ t∞chto informacφ pou╛ijeme Pr∙zkumnφk SQL.
Poznßmka: Nikdy nem∙╛eme nastavovat hodnoty pro v²stupnφ a v²sledkovΘ parametry. Tyto typy parametr∙ zφskajφ svΘ hodnoty provedenφm ulo╛enΘ procedury.

Zji╣╗ovßnφ informacφ o parametrech p°i nßvrhu
Pokud p°i nßvrhu mßme p°φstup k databßzovΘmu serveru, pak jsou dv∞ mo╛nosti k zobrazenφ informacφ o parametrech pou╛it²ch ulo╛enou procedurou:

Pr∙zkumnφk SQL m∙╛eme pou╛φt ke zkoumßnφ ulo╛en²ch procedur na na╣em databßzovΘm serveru, pokud pou╛φvßme p°irozenΘ ovladaΦe BDE. P°i pou╛itφ ovladaΦ∙ ODBC nelze zkoumat ulo╛enou proceduru pomocφ Pr∙zkumnφka SQL. To se t²kß i Inspektora objekt∙. Mno╛stvφ informacφ vrßcen²ch o ulo╛enΘ procedu°e v Inspektoru objekt∙ zßvisφ na na╣em databßzovΘm serveru.
K zobrazenφ definicφ jednotliv²ch parametr∙ v Inspektoru objekt∙:
  1. Vybereme komponentu ulo╛enΘ procedury.
  2. Nastavφme vlastnost DatabaseName komponenty ulo╛enΘ procedury na p°ezdφvku BDE pro nß╣ databßzov² server (nebo vlastnost DatabaseName komponenty databßze).
  3. Nastavφme vlastnost StoredProcName na jmΘno ulo╛enΘ procedury.
  4. Stiskneme tlaΦφtko se t°emi teΦkami pro vlastnost Params v Inspektoru objekt∙.
  5. Vybφrßme jednotlivΘ parametry v Editoru k zobrazovßnφ a nastavenφ jejich vlastnostφ v Inspektoru objekt∙.
Pro n∞kterΘ servery n∞kterΘ nebo v╣echny informace nemusφ b²t dostupnΘ.
V Inspektoru objekt∙, kdy╛ zobrazujeme jednotlivΘ objekty TParam, pak ParamType indikuje zda vybran² parametr je vstupnφ, v²stupnφ atd.. Vlastnost DataType indikuje datov² typ hodnoty parametru, jako je °et∞zec, celΘ Φφslo apod. Vlastnost Value umo╛≥uje zadßvat hodnotu pro vybran² vstupnφ parametr.
Poznßmka: Sybase, MS-SQL a Informix nevracejφ informace o typu parametr∙. K zji╣t∞nφ t∞chto informacφ pou╛ijeme Pr∙zkumnφk SQL.
Poznßmka: Informix nevracφ informace o datov²ch typech. K zji╣t∞nφ t∞chto informacφ pou╛ijeme Pr∙zkumnφk SQL.
Poznßmka: Nikdy nem∙╛eme nastavovat hodnoty pro v²stupnφ a v²sledkovΘ parametry. Tyto typy parametr∙ zφskajφ svΘ hodnoty provedenφm ulo╛enΘ procedury.
Vytvß°enφ parametr∙ za b∞hu
Pokud jmΘno ulo╛enΘ procedury nenφ specifikovßno v StoredProcName p°ed spu╣t∞nφm, pak pro parametry nejsou automaticky vytvß°eny objekty TParam a musφme je vytvß°et programov∞. To m∙╛eme provΘst instantizacφ novΘho objektu TParam nebo metodou TParams::AddParam.
Nap°. ulo╛enß procedura InterBase GET_EMP_PROJ, uvedenß dßle po╛aduje jeden vstupnφ parametr (EMP_NO) a jeden v²stupnφ parametr (PROJ_ID).
CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT)
RETURNS (PROJ_ID CHAR(5))
AS
BEGIN
  FOR SELECT PROJ_ID
  FROM EMPLOYEE_PROJECT
  WHERE EMP_NO = :EMP_NO
  INTO :PROJ_ID
  DO
    SUSPEND;
END
K≤d C++ Builderu k p°i°azenφ tΘto ulo╛enΘ procedury k TStoredProc nazvanΘ StoredProc1 a vytvo°enφ objekt∙ TParam pro dva parametry je:
{
  TParam *P1, *P2;
  ...
  StoredProc1->StoredProcName = "GET_EMP_PROJ";
  StoredProc1->Params->Clear();
  P1 = new TParam(StoredProc1->Params, ptInput);
  P2 = new TParam(StoredProc1->Params, ptOutput);
  try
  {
    StoredProc1->Params[0]->Name = "EMP_NO";
    StoredProc1->Params[1]->Name = "PROJ_ID";
    StoredProc1->ParamByName("EMP_NO")->AsSmallInt = 52;
    StoredProc1->ExecProc();
    Edit1->Text = StoredProc1->ParamByName("PROJ_ID")->AsString;
  }
  __finally
  {
    delete P1;
    delete P2;
  }
}
Spojovßnφ parametr∙
Kdy╛ p°ipravujeme a provßdφme ulo╛enou proceduru, pak jejφ vstupnφ parametry jsou automaticky spojeny s parametry na serveru. Vlastnost ParamBindMode pou╛ijeme ke specifikaci zp∙sobu spojenφ parametr∙ v na╣φ ulo╛enΘ procedu°e k parametr∙m na serveru. Implicitn∞ ParamBindMode je nastaven na pbByName, co╛ znamenß, ╛e parametry z komponenty ulo╛enΘ procedury jsou p°ipojeny k parametr∙m na serveru na zßklad∞ jmΘna. To je nejsnadn∞j╣φ metoda spojovßnφ parametr∙.
N∞kterΘ servery takΘ podporujφ spojovßnφ parametr∙ pomocφ jejich po°adφ. V tomto p°φpad∞, po°adφ ve kterΘm specifikujeme parametry v Editoru parametr∙ je d∙le╛itΘ. Prvnφ nßmi specifikovan² parametr musφ odpovφdat prvnφmu parametru na serveru, druh² parametr druhΘmu parametru na serveru, atd. Pokud nß╣ server podporuje spojovßnφ parametr∙ na zßklad∞ po°adφ, pak musφme nastavit ParamBindMode na pbByNumber.
Tip: Pokud chceme nastavit ParamBindMode na pbByNumber, pak musφme specifikovat odpovφdajφcφ typy parametr∙ v odpovφdajφcφm po°adφ. Zdrojov² k≤d ulo╛enΘ procedury si m∙╛eme prohlΘdnout Pr∙zkumnφkem SQL k urΦenφ sprßvnΘho po°adφ a typ∙ parametr∙.

Prßce s ulo╛en²mi procedurami Oracle

Servery Oracle umo╛≥ujφ p°ekr²vßnφ ulo╛en²ch procedur; p°ekrytΘ procedury jsou r∙znΘ procedury se stejn²m jmΘnem. Vlastnost Overload komponenty ulo╛enΘ procedury povoluje aplikaci specifikovat proceduru k provedenφ. Pokud Overload je nulovΘ (implicitn∞), pak se p°edpoklßdß, ╛e nenφ p°ekr²vßnφ. Pokud Overload je 1, pak komponenta ulo╛enΘ procedury provede prvnφ ulo╛enou proceduru, kterou nalezne na serveru Oracle, kter² mß p°ekr²vajφcφ jmΘno; pokud je 2, pak je provedena druhß, atd.
Poznßmka: P°ekrytΘ ulo╛enΘ procedury mohou takΘ mφt r∙znΘ vstupnφ a v²stupnφ parametry.

  1. Nynφ se podφvßme na n∞kolik ji╛ hotov²ch program∙. Net²kajφ se ulo╛en²ch procedur, ale °e╣φ r∙znΘ problΘmy. Prvnφ z nich nalezneme v adresß°i Program files\Borland\CBuilder\Examples\DBTask\MdxBuild. Jednß se o jednoduchou aplikaci budujφcφ indexy pro databßzovΘ tabulky Paradoxu. Program je pou╛φvßn k odstran∞nφ chyb Index Out Of Date vyskytujφcφch se p°i spou╣t∞nφ aplikacφ pou╛φvajφcφ tabulky Paradoxu. M∙╛eme p°ebudovat n∞kterΘ nebo v╣echny tabulky danΘ p°ezdφvky. P°i pou╛φvßnφ programu zvolφme p°ezdφvku obsahujφcφ opravovanΘ tabulky. Po zvolenφ p°ezdφvky je aktualizovßn seznam tabulek, kde zvolφme po╛adovanou tabulku nebo All Tables. K p°ebudovßnφ index∙ na zvolen²ch tabulkßch potom stiskneme tlaΦφtko Build Indexes. Na stavovΘm °ßdku je popisovßn pr∙b∞h zpracovßnφ. ProhlΘdn∞te si takΘ tuto aplikaci a zjist∞te jak pracuje.
  2. Dal╣φ program umφst∞n² v adresß°i Program files\Borland\CBuilder\Examples\DBTask\QBFDemo ukazuje jak vytvß°et vlastnφ dotazy. ProhlΘdn∞te si tuto aplikaci a zjist∞te jak pracuje.
  3. Aplikace umφst∞nß v adresß°i Program files\Borland\CBuilder\Examples\DBTask\DBErrors ukazuje pou╛itφ datovΘho modulu pro centralizovanΘ k≤dovßnφ, pou╛φvßnφ vazby 1 : N : M a generovßnφ a °φzenφ databßzov²ch chyb. Aplikaci vyzkou╣ejte a podφvejte se jak pracuje.
  4. Aplikace z adresß°e Program files\Borland\CBuilder\Examples\DBTask\BKQuery ukazuje pou╛itφ vφcevlßknov²ch SQL dotaz∙. Pou╛ivajφ se zde takΘ zdroje definovanΘ u╛ivatelem. Aplikaci vyzkou╣ejte a prohlΘdn∞te si ji.
  5. Aplikace ulo╛enß v adresß°i Program files\Borland\CBuilder\Examples\DBTask\CSDemos je klientskß aplikace InterBase. V souboru Readme.txt je umφst∞n popis jejφho spou╣t∞nφ. Aplikaci vyzkou╣ejte.
  6. Poslednφ aplikace se kterou se v tΘto kapitole budeme zab²vat je ulo╛enß v adresß°i Program files\Borland\CBuilder\Examples\DBTask\IBDemo. Tato aplikace ukazuje jak pou╛φvat udßlosti InterBase. Aplikaci vyzkou╣ejte a prohlΘdn∞te si ji.
18. Prßce s ulo╛en²mi procedurami