Dobrej pokec   Lišanská šlapka   MSDN   VB na Microsoft.cz   NCHAT Nový design
   Portál  O firmě  Profil  Reference  Produkty  Odkazy  Diskuse  Tisková verze 



  Novinky e-mailem
Pokud chcete být informováni o změnách ,přihlašte se k odběru novinek!
  
  
  Nejčtenější články
 Seznam všech českých hubů abecedně. (32112)
 Seznam hubů nad 100 uživatelů (20823)
 Konfigurovatelné rozbalovací menu (17437)
 Jak na makra (14327)
 Rozbalovací menu v JavaScriptu (2.) (12646)
  Nejstahovanější soubory
 Action Meter (1846)
 Slovní Fotbal (777)
 IE Boss Guard (484)
 zdroják slovní fotbal (383)
 Folder Watcher (370)
  Anketa

  Nabídka portálu

 Adobe Premiere
    Jak se dá udělat
 Alternativní prohlížeče
    FireFox
 ASP
    Tipy a triky
 Direct Connect
    Huby
    Scripty pro HUB
    Tipy a triky CZDC++
 Game Maker
    Tipy a triky
 Hry
    Akční
    Logické
 HTML
    Scripting (VBS,JS)
    Tipy a triky
 Internet
    Užitečné triky
 Microsoft Office
    Tipy, triky, návody
    Užitečná makra
    VBA Tipy a triky
 MS SQL Server
    Nastavení
    Seriály
    Tipy a triky
 Multimedia
    Návody
 Oracle
    PL/SQL
 PHP
    Jak na to
    Tipy a triky
 Užitečné odkazy
    Grafické programy
    Programátorské
 Visual Basic
    DirectX
    Formuláře
    Jak se dá udělat ...
    Užitečné funkce
    Win32Api
    Zdroje
 Visual Basic .NET
    Užitečné funkce
 Vtípky
    Vtipy a anekdnoty
 Vypalování
    DVD Shrink
    Tipy a triky
 Windows
    Jak se dá ...
    Tipy a triky pro XP
    Triky pro IE


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ářů: 5734
Unikátních: 5378


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.



Příspěvky ke článku:



© Swit.cz, Marek Kočí 2003