Feladatok a hierarchikus lekérdezésekhez
- Táblák és feladatok: dolgozo_tabla.txt
Ehhez a táblák
létrehozása: create_dolgozo.txt
- Listázzuk ki az dolgozo
tábla
alapján a
főnökökhöz tartozó beosztottak
nevét
és osztályukat.
a.) A
dolgozo tábla
önamagára való
hivatkozásával
(többtáblás
lekérdezés sorváltozókkal).
b.) A CONNECT BY
utasításrész
használatával, a hierarchikus
szerkezetet 'KING'-től
felülről
lefelé bejárva.
c.) Alulról
felfelé járjuk be a
hierarchikus szerkezet egy
ágát 'SMITH'-től kezdve.
Változóhasználat, az
adatok képernyőre való
kiíratása 1a_valtozok.sql
- -- Oracle DBMS_OUTPUT
csomag PUT_LINE
eljárása
-- Változóhasználat: i.) az
SQL*Plus
felhasználói
változói,
ii.) az
SQL*Plus környezeti változói,
iii.) a
PL/SQL változói.
-- Írjunk egy PL/SQL blokkot
tartalmazó SQL*Plus
szkipt programot, amely
a
felhasználótól bekér egy
egész számot! Ha ez a szám nagyobb
100-nál,
akkor a PL/SQL blokkban,
egyébként pedig a PL/SQL blokkot követő
gazdanyelvi (SQL*Plus)
környezetben írassa ki
Amikor a
lekérdezés egy sort ad vissza: SELECT
INTO utasítás 1b_select_into.sql
- A SELECT ... INTO
utasítás a PL/SQL-ben
-- Határozzuk meg egy PL/SQL program
segítségével a
felhasználó által
megadott
telephelyen dolgozók
béröszegét. A telephelynek a
várost
(loc)
adjuk meg (mint
például Boston, Chicaco, Dallas vagy New York).
-- Ennek a feladatnak további
megoldásaira a következő szakaszban
visszatérünk
(lásd 2a_select_into.sql és
további
megoldásait is).
Vezérlési
szerkezetek a PL/SQL-ben -- PL/SQL Language
Reference 11gR2 >> 4.fej.
Control Statements
-- A programozási nyelvekből ismert egyszerű
példák 1c_if_then.sql
- Feltételes
utasítás (két
egész
szám összege páros-e) 1d_loop_ciklus.sql
- LOOP ciklus (a
Fibonacci-sorozat elemei) 1e_while_ciklus.sql
- WHILE
ciklus (az
Euklideszi
algoritmus) 1f_for_ciklus.sql
- FOR ciklus (páratlan
számok
négyzetösszege)
További
gyakorló feladatok: Lásd Példatár
"8.fejezet.
Változóhasználat, vezérlési
szerkezetek a PL/SQL-ben" feladatai
3.2.
SELECT INTO, hivatkozási és összetett
adattípusok
-- SELECT
INTO csak akkor használható, ha a
lekérdezés pontosan egy sort ad.
Ha a lekérdezés
több sorral
tér vissza kurzort kell használni: 9gyak#3.3. Kurzor
--
Példák rekordok, kollekciók
(tömbök) plsql_peldak.sql (Nikovits
Tibor)
-- PL/SQL Language Reference 11gR2 >> 3.fej.
PL/SQL Data Types
-- PL/SQL Language Reference 11gR2 >> 5.fej.
Collections and Records
Hivatkozási
adattípus, %TYPE,
%ROWTYPE 2a_select_into.sql
- A SELECT ... INTO
utasítás
-- Határozzuk meg egy PL/SQL program
segítségével a
felhasználó által
megadott
telephelyen dolgozók
béröszegét. A telephelynek a
várost
(loc)
adjuk meg (mint
például Boston, Chicaco, Dallas vagy New York).
-- Lásd a korábbi 1b_select_into
feladat
I.megoldását
is, csak most
hivatkozási
típus
deklarálásával oldjuk meg a feladatot:
II.megoldás.
Közvetlen
összegzéssel: III.mo.
Tagonkénti
összesítéssel: IV.mo.
-- Valamint rejtett kurzorral
való másféle
megoldására
még
visszatérünk. Rekord
adattípus, gyűjtőtábla
típus 2b_gyujtotabla.sql
- Összetett
típus, rekord,
gyűjtőtábla
- Írjunk PL/SQL programot, amely
meghatározza a 7698
azonosítójú
dolgozó
nevét
gyűjtőtábla használatával.
1.) Hello World program (alap program, kiírás a
képernyőre)
Írjon PL/SQL blokkot
tartalmazó
script programot, amely a
felhasználótól
bekér egy egész
számot
és bekéri a nevét, majd a
PL/SQL
blokkból kiírja
"Szia <X.Y.
(név)>, a kedvenc
számod ez: <szám> " (mo:
'&nev' és
&szam)
2.) Írjuk ki KING fizetését
(olvasás
táblából
változóba), abban az esetben,
ha ismert, hogy pontosan egy KING nevű
dolgozó szerepel a táblában!
3.) Írjuk ki KING belépési
dátumát és
fizetését
különböző formátumokban,
mint például
1981.11.17,
1981-november-17,
stb (dátum
formátumok)
(pontosan egy sorból
álló
több oszlopos
lekérdezés)
4.) Tegyük be a dolgozók nevét egy plsql
tömbbe, és írjuk ki az utolsó
előtti sort!
(plsql tömb
használata)
--
Segítségképpen: Tábla
típus
definiálása:
TYPE tábla_típus_neve
IS TABLE OF adattípus INDEX BY BINARY_INTEGER;
ahol az
adattípus lehet %TYPE vagy %ROWTYPE-al
megadva,
lehet
előre definiált típus vagy általunk
definiált rekordtípus.
Tábla
deklarálása: tábla_név
tábla_típus_neve;
Hivatkozás a
tábla elemeire:
tábla_név(index)
PL/SQL tábla
attribútumok,
például: tábla_név.COUNT hány
eleme van a táblának.
További
gyakorló feladatok: Lásd Példatár
"9.fejezet.
Hivatkozási és összetett
adattípusok" feladatai