(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)
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.