Nabídka portálu se při zobrazení článku přesouvá na konec pravého sloupce nabídek.
Jak na Oracle PL/SQL (1.) |
Autor: Kočí Marek
| Zdroj:
| Vytvořeno: 27.11.2003
| Publikováno: 27.11.2003
| Čtenářů: 5806
| Unikátních: 5449
|
Seriál o používání rozšíření SQL jazyka v databázi ORACLE.
PL/SQL? Co to vlastně je?
PL/SQL je rozšíření jazyka SQL pro databázi ORACLE.
Jazyk SQL definuje, jaká data uživatel potřebuje. Oproti tomu PL/SQL umožňuje
širší spektrum možností, jak data zpracovávat. Můžete si napsat obecné funkce
například pro práci s formátem data a ta potom z jiných procedur a
funkcí volat.
Základy PL/SQL
PL/SQL je strukturovaný jazyk. Můžete tedy psát procedury a funkce v souvislých logických blocích. Zlepší se tím pro Vás
čitelnost kódu a při zachování standardů a častém komentování souvislých bloků značně zefektivníte svojí práci.
Způsob zápisu kódu: Deklarace
PL/SQL má téměř podobný způsob zápisu jako Delphi. To znamená, že například příkaz BEGIN označuje začátek výkonného kódu programu, a tento blok poté končí
příkazem END.
Dále se za každým celým příkazem vkládá středník. Následující příklad demonstruje, jak potom takový kód vypadá:
DECLARE
pVeta Varchar(100);
pSlovo Varchar(50);
BEGIN
pSlovo:=' jak se máte';
pVeta:='Ahoj lidi,';
pVeta:=pVeta || pSlovo;
END;
Tento program je složen ze dvou bloků. V bloku DECLARE se deklarují proměnné, klíčové slovo
BEGIN oznamuje začátek těla hlavního programu.
Tam se nejprve naplní proměnné pSlovo a pVeta a potom se sečtou. V konečném výsledku tedy
proměnná pVeta obsahuje řetězec "Ahoj lidi, jak se máte?". Klíčové slovo END potom ukončuje tento program.
Jak ještě můžeme deklarovat proměnné?
Tady je několik způsobů zápisu deklarace:
DECLARE
pSlovo VARCHAR(50); -- text do velikosti 50 znaků
pCislo NUMBER; -- Číslo
pCislo NUMBER(2); -- Krátké číslo
pDatum1 DATE; -- Datum
pDatum tTab.DATNAROZ%TYPE; -- typ jako pole DATNAROZ v tTab
-- tTab je tabulka kde sloupec DATNAROZ je typ datum
pZnak CHAR; -- jeden znak
pTab tTab%ROWTYPE -- pTab bude obsahovat typy z tabulky
-- zeptat se muzeme potom treba takto pTab.DATNAROZ
pTBig CLOB; -- dlouhý text
pBBig CLOB; -- dlouhá binární data
pPocetRadek CONSTANT INTEGER := 30; -- Toto je konstanta
-- konstantu nelze měnit, složí jako pevná hodnota
/* Tady si ukážeme rozdíl mezi konstantou a výchozím
přiřazením hodnoty do proměnné */
pCRight VARCHAR(50) := '(C) Marek Kočí 2003'; -- text
/* pPocetRadek je konstanta a bude vždy hodnota 30
oproti tomu pCRight je proměnná a i když v počátku
obsahuje hodnotu '(C) Marek Kočí 2003' můžeme to
později v kódu změnit. */
Z tohoto výpisu jste se naučili deklarovat nejpoužívanější datové typy a konstanty v PL/SQL,
přiřadit jim výchozí hodnotu a zároveň jste si mohli všimnout, jak se používají komentáře.
Dvě pomlčky způsobí, že zbytek textu za pomlčkami se považuje za komentář.
Další možnost zápisu pro víceřádkový komentář je jako v jazyce C, tedy použijeme
/* pro začátek a */ pro konec komentáře.
Další datové typy jsou:
- BINARY_INTEGER, DEC, DECIMAL, DOUBLE, PRECISION, FLOAT, INT, INTEGER, NATURAL, NUMBER, NUMERIC, POSITIVE, REAL,
SMALLINT, CHAR, CHARACTER, LONG, LONG RAW, RAW, ROWID, STRING, VARCHAR, VARCHAR2, DATE, BOOLEAN
- RECORD, TABLE
Podmínkové příkazy
Potřebujeme-li náš program rozdělit při splnění nějaké podmínky, můžeme využít
příkazy:
IF [podmínka] THEN
ELSIF [podmínka] THEN
ELSE
END IF;
-- opakuj dokud je splnena podminka
WHILE [podminka] LOOP
END LOOP;
FOR Promena IN {REVERSE} [od]..[do]
LOOP
END LOOP;
Následuje příklad využití:
DECLARE
pSlovo VARCHAR(50); -- text do velikosti 50 znaků
pCislo NUMBER; -- Číslo
BEGIN
pCislo := 3;
IF pCislo=3 THEN
pSlovo:='Průměrná známka';
ELSIF pCislo<3 THEN
pSlovo:='Dobrá známka';
ELSE
pSlovo:='Špatná známka';
END IF;
END;
Na tomto příkladu ze školy :o) vidíte, jak IF THEN příkazy používat,
pokud je známka trojka, jste hodnocen jako průměr, v lepším případě (1,2) jde o
dobrý výsledek, v opačném (4,5) je známka hodnocená jako špatná.
DECLARE
pSlovo VARCHAR(50); -- text do velikosti 50 znaků
pCislo NUMBER; -- Číslo
BEGIN
pCislo:=100;
WHILE pCislo > 50 LOOP
pCislo:=pCislo-5;
END LOOP;
-- ted je pCislo rovno 50
END;
Na tomto příkladu vidíte, jak WHILE LOOP příkazy používat,
dokud je pCislo větší než, 50 tak zmenšuj pCislo o 5. V případě, že číslo bude 50, cyklus se přeruší
a kód bude pokračovat dále.
DECLARE
pSlovo VARCHAR(50); -- text do velikosti 50 znaků
pCislo NUMBER; -- Číslo
BEGIN
FOR pCislo IN 1..5
LOOP
IF pCislo=3 THEN
pSlovo:='Průměrná známka';
ELSIF pCislo<3 THEN
pSlovo:='Dobrá známka';
ELSE
pSlovo:='Špatná známka';
END IF;
END LOOP;
END;
Tento příklad projde všechny známky od jedné do 5 a vypíše k nim hodnocení.
V případě že potřebujete postupovat od nejvyššího prvku musíte vložit ještě klíčové slovo REVERSE.
Kód by potom vypadal takto:
DECLARE
pSlovo VARCHAR(50); -- text do velikosti 50 znaků
pCislo NUMBER; -- Číslo
BEGIN
FOR pCislo REVERSE IN 1..5
LOOP
IF pCislo=3 THEN
pSlovo:='Průměrná známka';
ELSIF pCislo<3 THEN
pSlovo:='Dobrá známka';
ELSE
pSlovo:='Špatná známka';
END IF;
END LOOP;
END;
A to je pro dnešek vše, v dalším díle se podíváme na operátory a typové konverze.
|