IP-08abctAB2G   Adatbázisok-2 gyakorlat
ELTE, 2014/2015.tanév I.félév, dr. Hajas Csilla gyak.vez.
Hétfő 12:15-13:45 PC3, 14:00-15:30 PC3, Szerda 10:15-11:45 PC9
backAB2gyak (főmenü)    Gyak.köv.    1.gyak     3.gyak    OracleDoc
   
2.gyak. Egyéb objektumok
    
G (gépes feladatok)
> Ismétlés az előző féléves Adatbázisok-1 anyagából: PL/SQL alapok
G2. (folyt. PL/SQL) Táblák és oszlopai (DBA_TAB_COLUMNS)
> G3. Egyéb objektumok (pl. szinonima, szekvencia, adatbázis-kapcsoló)
   

Ismétlés: Előfeltétel: Adatbázisok-1 kurzus anyagából tudni kell:
> PL/SQL alapok: PL/SQL Language Ref. (.html) és PDF (.pdf )
   --- Több sort visszaadó lekérdezésekre, kurzor használat példákkal:
        --- 6 PL/SQL Static SQL    --- Example 6-16 %NOTFOUND
> PL/SQL-hez az Adatbázisok-1 Oracle segédanyag:
   ---  PL/SQL (Oracle Junior előadás),  Stanford University: PL/SQL
     
G2. (folyt. PL/SQL) Táblák oszlopai és megszorítások
(DBA_TABLES, DBA_VIEWS, DBA_TAB_COLUMNS, DBA_CONSTRAINTS)

(folyt.) 2.06. Adjuk meg azoknak a tábláknak a tulajdonosát és nevét, amelyeknek van
               'Z' betűvel kezdődő oszlopa. --> Írjuk át, hogy a felhasználó adja meg
               a kezdő karaktersorozatot (helyettesítő változók használata, '&p_kar').
         --> Ha kisbetűkkel adjuk meg a karakterláncot, akor is működjön a lekérdezés.
         --> Ez a feladat átvezet a 2.09. PL/SQL feladatra.
   
2.09. Írjunk meg egy plsql eljárást, amelyik egy paraméterül kapott karakterlánc alapján
         kiírja azoknak a tábláknak a nevét és tulajdonosát, amelyeknek van olyan oszlopa,
         amely az adott karakterlánccal kezdődik.
         Ha kisbetűkkel adjuk meg a karakterláncot, akkor is működjön az eljárás!
         -- CREATE OR REPLACE PROCEDURE tabla_kiiro (p_kar VARCHAR2)
         Az eljárás segítségével írjuk ki a 'Z' betűvel kezdődő oszlopokat tartalmazó
         táblák nevét és tulajdonosát!
      
Szorgalmi feladat (beküldhető)
2.10. Írjunk meg egy plsql procedúrát, amelyik a paraméterül kapott táblára kiírja
         az őt létrehozó CREATE TABLE utasítást.
                PROCEDURE create_table_ut(p_owner VARCHAR2, p_tabla VARCHAR2)
         Elég ha az oszlopok típusát és DEFAULT értékeit kiírja, és elég ha a következő típusú
         oszlopokra működik: CHAR, VARCHAR2, NCHAR, NVARCHAR2,
                                          NUMBER, FLOAT, BINARY_FLOAT, DATE, ROWID
         Teszteljük a procedúrát az alábbi táblával.
         CREATE TABLE tipus1_proba
                  (c10 CHAR(10) DEFAULT 'bubu', vc20 VARCHAR2(20),
                    nc10 NCHAR(10), nvc15 NVARCHAR2(15),
                    num NUMBER, num10_2 NUMBER(10,2), num10 NUMBER(10) DEFAULT 100,
                    flo FLOAT, bin_flo binary_float DEFAULT '2e+38', bin_doub binary_double DEFAULT 2e+40,
                   dat DATE DEFAULT TO_DATE('2007.01.01', 'yyyy.mm.dd'), rid ROWID);
       

G3. Egyéb objektumok (pl. szinonima, adatbázis-kapcsoló)
(DBA_OBJECTS, DBA_SYNONYMS, DBA_SEQUENCES, DBA_DB_LINKS)
   
Segédanyagok: EgyébObjektumok.txt  
>> OracleDoc: SQL Language Reference >> innen a CREATE utasítások
   
Séma objektumok és nem-séma objektumok (public)
3.01. Szinonimák létrehozása és használata: a HR séma tábláihoz készítsünk
         szinonimákat és keressük meg a DBA_SYNONYMS katalógustáblában.
         --- Példák: CREATE OR REPLACE SYNONYM
   
3.02.  Adjuk ki az alábbi utasítást: SELECT * FROM szinonima1;
          majd a katalógustáblák lekérdezésével derítsük ki, hogy kinek melyik tábláját
          kérdeztük le. (Ha nézettel találkozunk, azt is fejtsük ki, hogy az mit kérdez le.)
 
3.03. Szekvencia létrehozása és használata
         - Előkészítés: sila.emp és sila.dept hozzuk létre (de üresen!) saját táblákat.
         - Hozzunk létre egy szekvenciát, amelyik az osztály azonosítókat generálja
           a számunkra. Minden osztály azonosító a 10-nek többszöröse legyen.
           --- Példák:  CREATE SEQUENCE  
         - Vigyünk fel 3 új osztályt és osztályonként minimum 3 dolgozót a táblákba.
           Az osztály azonosítókat a szekvencia segítségével állítsuk elő, ezt tegyük be
           a táblába (vagyis ne kézzel írjuk be az azonosítót).
            --- Példák: Sequence Pseudocolumns
         - A felvitel után módosítsuk a 10-es osztály azonosítóját a köv.érvényes
           (generált)osztály azonosítóra. (Itt is a szekvencia segítségével adjuk meg,
           hogy mi lesz a következő azonosító.) A 10-es osztály dolgozóinak az
           osztályazonosító ertékét is módosítsuk az új értékre.
 
3.04. Hozzunk létre adatbázis-kapcsolót (database link) az athos adatbázisban,
         amelyik a másik tomx adatbázisra mutat, majd keressük ki a megfelelő
         adatszótárnézetben (DBA_DB_LINKS) az erről tárolt információt. 
            
                    CREATE DATABASE LINK tomx
        connect to <azonosito> identified by <jelszo>
        USING 'tomx.inf.elte.hu:1521/ora11g';

          --- Átmenetileg az alagsor beázása és a korábbi szerverek leállítása miatt
          --- az athos helyett a eszakigrid-t, a tomx helyett pedig az irtsz-t használjuk,
          ---
host: eszakigrid97.inf.elte.hu, port: 1521, service_name: eszakigrid97

                    CREATE DATABASE LINK irtsz
        connect to <azonosito> identified by <jelszo>
        USING 'irtsz.inf.elte.hu:1521/orahp.inf.elte.hu';

         
         Az adatbáziskapcsoló segítségével adjuk meg olyan lekérdezést, amely mindkét
         adatbázis tábláit használja. Például a IRTSZ adatbázisban legyen az emp2 tábla
         (lásd 4.03. feladatot, de csak ezt, a dept2-t nem), az ESZAKIGRID adatbázisban
         pedig legyen a dept2 tábla (és itt csak a dept2 tábla legyen, de az emp2 nem).
         Adjunk olyan lekérdezést az ESZAKIGRID adatbázisban, amely innen használja
         a dept2 táblát, a másik IRTSZ adatbázisból pedig az emp2@IRTSZ  táblát.
 
Fel a lap tetejére (mai gyak témakörei)      Vissza az AB2gyak kezdőlapjára