Muj Webik MFF Přednáška Oracle 2004 22.3.2004
  
Hlavní strana   |      |   Rodina   |   Programování a tvorba   |   Galerie, fotografie, fotomontáže   |   MFF   |   Gympl   |   Vtipy   |   Odkazy   |   Files   |   O webu

 
22.3.2004
Stránka vytvořena: 22. březen 2004 (14:22:28)   |   Poslední změna: 22. březen 2004 (15:32:44)   |   Stránku připravil: Matouš
 
 
Na Obsah   PLSQL

SELECT musi vratit prave jeden radek!!, jinak program vyhodi vyjimku. Vysledky jsou prirazeny do odpovidajich promennych.

  • SELECT vyrazy
  • INTO promenne
  • FROM

Pri psani PLSQL programu v SQL+ se prikazy odeslou az v okamziku potrzeni "/enter". Neoveruje syntaxi, o to se stará server. Vrací příznak značící, zda script proběhl bez chyb.

Výhoda je, že veškeré operace jsou vykonávány na serveru, tzn. ušetří se trafic mezi klientem a serverem.

Server obsahuje několikero základních funkcí:

  • DBMS_OUTPUT.PUT_LINE('text')
    • vypíše text na obrazovku konzole. Aby se objevil, tak je třeba nastavit proměnou SERVEROUTPUT na ON (Příkaz SET).
    • Blbý je, že veškerý výstup je vysypán uživateli až po ukončení scriptu ... najednou

Příklad, který vypíše 20,1,2,...,10:

declare
  i number;
begin
 i := 20;
 dbms_output.put_line(i);
 for i in 1..10 loop
  dbms_output.put_line(i);
 end loop;
end;

FOR r IN (SELECT * FROM osoba) LOOP ...... END LOOP;

  • tímto příkazem cyklíme pře jednotlivé výsledky
  • r je struktura odpovídající struktuře řádku vráceného příkazem SELECT

Příklad využití PLSQL na zjištění věku z rodného čísla. Není to dokonalé, ale poskytuje to alespoň náznak použití.

DECLARE

  • r osoba.vek%TYPE
  • d DATE;
  • m NUMBER;

BEGIN

  • FOR r in (SELECT rc, vek FROM OSOBA) LOOP
  • IF substr(r.rc, 3, 1) IN ('0', '1')
    • THEN d:= to_date(substr(r.rc, 1,6), 'yymmdd'); -- je to chlap
    • ELSE m:= to_number(substr(r.rc,3,2)) - 50; -- je to zenska
    • d:= to_date(substr(r.rc, 5, 2) || '.' ||m||'.'||substr(r.rc, 1, 2), 'dd.mm.yy');
  • END IF; -- v date mame datum narozeni
  • v := trunc(months_between(d, sysdate) / 12);
  • UPDATE osoba SET vek = v WHERE rc=r.rc;
  • END LOOP;

END;

 
 
Na Obsah   Sekvence

Všechny sekvence jsou uloženy v tabulce user_sequences, kde se dozvíme, rozsah, způsob generování sekvence, názvy atd.

CREATE sequence jmeno

  • vytvoří sekvenci čísel od 1 do infinity
  • INCREMENT_BY pocet -- o kolik se zvyšuje číselník
  • START_WITH pocet -- na jakem cisle se zacne
  • MINVALUE pocet
  • MAXVALUE pocet
  • CYCLE / NONCYCLE -- zda se generovana cisla muzou po pretoceni začít opakovat
  • NOCACHE / CACHE pocet -- kolik si server dopředu vygeneruje čísel

DROP sequence jmeno

Máme-li sekvenci vytvořenou, pak pro manipulaci se sekvencemi používáme tyto dvě funkce:

  • jmeno_sekv.currval -- vrátí poslední přidělené číslo sekvence jmeno_sekv
  • jmeno_sekv.nextval -- vrátí další číslo v sekvenci
 
 
Na Obsah   Komunikace s klientem

v SQL+ deklarujeme příkazem VAR jm TYP proměnou, kterou pak můžeme v PLscriptu používat s prefixem '  :  ' . Např teda :mojepromennavSQLplus.

 
 
u2b project, stránka spravována systémem MyOIS, webmaster Matouš "Mavo" Voldřich  
Vyhledávání
Mapa Serveru
Tiskni stránku
  
Prohledej Fotografie (3158 položek)
Prohledej Dokumenty (10 položek)
Prohledej Odkazy (62 položek)
Prohledej Události (59 položek)
Prohledej Adresy (1 položek)