SlideShare a Scribd company logo
Adatbázis alapú rendszerek 1. ZH 
1. Feladat (2 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre: 
 létrehoz egy CEG nevű táblát, mely az alábbi mezőkkel rendelkezik: 
o cegid: egész szám, mely az elsődleges kulcs 
o cegnev: max. 30 karakter hosszú karaktersorozat 
o tulaj: max. 40 karakter hosszú karaktersorozat 
o reszv: max. 10 jegyű, 2 tizedesjeggyel bíró szám, értéke nem lehet NULL 
 kiírja a „Kérem a cég azonosítóját:” szöveget és bekér egy megfelelő típusú értéket 
 kiírja a „Kérem a cég nevét:” szöveget és bekér egy megfelelő típusú értéket 
 kiírja a „Kérem a tulajdonos nevét:” szöveget és bekér egy megfelelő típusú értéket 
 kiírja a „Kérem a cég részvényének értékét (Ft):” szöveget és bekér egy megfelelő típusú 
értéket 
 beszúrja a táblába az előbbi paraméterekkel megadott rekordot 
 kivételkezelés segítségével kiírja a „Hiba: több azonos nevű létezik!” üzenetet, amennyiben 
az új adat felvitelével több azonos nevű cég keletkezett 
2. Feladat (2 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre: 
 létrehoz egy, a fenti CEG tábla rekordtípusával megegyező gyűjtőtáblát 
 a gyűjtőtáblába bemásolja 1‐től 10‐ig a páros azonosítóval rendelkező rekordok tartalmát a 
CEG táblából 
 törli a gyűjtőtábla 4‐es indexű elemét 
 végül  a  gyűjtőtábla  első  és  utolsó  indexértékei  között  végigiterálva  kiírja  a  cég  nevét  és 
részvényének értékét, de csak ha az adott indexértékhez létezik a gyűjtőtáblának sora 
3. Feladat (3 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre: 
 kiírja a „Kérem a keresett tulajdonos nevét:” szöveget és bekér egy megfelelő típusú értéket 
 létrehoz a fenti CEG táblában szereplő, az előző lépésben megadott személy által tulajdonolt 
cégek neveinek abc‐sorrendben való kilistázására egy explicit paraméterezett kurzort 
 a kurzor megnyitása után annak segítségével kiírja a rendezett listát 
 amennyiben  a  lista  nem  üres,  a  lista  után  közvetlenül  a  következő  sorba,  a  megfelelő 
kurzorfüggvény  segítségével  kiírja  a  következő  szöveget:  „Összesen  N  cég  van  X.Y. 
tulajdonában!”, ahol X.Y. az illető neve, N pedig a tulajdonában lévő cégek száma 
 amennyiben a lista üres, kiírja a következő üzenetet: „X.Y. nem szerepel az adatbázisban!”, 
ahol X.Y. a keresett tulajdonos neve 
 végül lezárja kurzort 
4. Feladat (3 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre: 
 kiírja a „Kérem a cég nevének részletét:” szöveget és bekér egy megfelelő típusú értéket 
 létrehoz egy explicit paraméterezett kurzort, mely a fenti CEG táblában szereplő, az előző 
lépésben megadott sztringet a nevében tartalmazó cégek részvényeinek értékét megnöveli 
5.0‐val 
 a kérdéses értékek módosítása előtt a sorokat zárolja más kódrészletek/tranzakciók elől 
 minden egyes növelés után kiírja az „Eddig X cég adatai módosultak!” szöveget, ahol X a 
kurzor által eddig feldolgozott sorok száma 
Megoldások: 
-- 1. Feladat --
create table ceg (
cegid integer primary key,
cegnev varchar2(30),
tulaj varchar2(40),
reszv number(10,2) not null
);
set serveroutput on
accept cid integer prompt 'Kérem a cég azonosítóját:'
accept cnev prompt 'Kérem a cég nevét:'
accept ctul prompt 'Kérem a tulajdonos nevét:'
accept cert number(10,2) prompt 'Kérem a cég részvényének értékét (Ft):'
insert into ceg values (&cid, '&cnev', '&ctul', &cert);
declare
nev ceg.cegnev%type;
begin
select cegnev into nev from ceg where cegnev LIKE '&cnev';
exception
when too_many_rows then
dbms_output.put_line('Hiba: több azonos nevű létezik!');
end;
/
-- 2. Feladat --
set serveroutput on
declare
type sortipus is table of ceg%rowtype
index by binary_integer;
gytabla sortipus;
ind binary_integer := 2;
begin
while ind <= 10
loop
select * into gytabla(ind) from ceg where cegid = ind;
ind := ind + 2;
end loop;
gytabla.delete(4);
for ind in gytabla.first..gytabla.last loop
if gytabla.exists(ind) then
dbms_output.put_line(gytabla(ind).cegnev || ': ' ||
gytabla(ind).reszv);
end if;
end loop;
end;
/
-- 3. Feladat --
accept tnev prompt 'Kérem a tulajdonos nevét:'
set serveroutput on
declare
cnev ceg.cegnev%type;
cursor listaz (tul varchar2) is
select cegnev from ceg where tulaj like tul order by cegnev;
begin
open listaz('&tnev');
loop
fetch listaz into cnev;
exit when listaz%notfound;
dbms_output.put_line(cnev);
end loop;
if listaz%rowcount > 0 then
dbms_output.put_line('Összesen ' || listaz%rowcount || ' ceg van ' ||
'&tnev' || ' tulajdonában!');
else
dbms_output.put_line('&tnev' || ' nem szerepel az adatbázisban!');
end if;
close listaz;
end;
/
-- 4. Feladat --
accept cnev prompt 'Kérem a cég nevének részletét:';
set serveroutput on
declare
cursor novel(nev varchar2) is
select *
from ceg
where cegnev like nev
for update of reszv;
begin
for j in novel('%&cnev%') loop
dbms_output.put_line('Eddig ' || novel%rowcount || ' cég adatai
módosultak!');
update ceg
set reszv = reszv + 5
where current of novel;
end loop;
end;
/

More Related Content

Viewers also liked

Leccinde vida24 2_2
Leccinde vida24 2_2Leccinde vida24 2_2
Leccinde vida24 2_2
Alejandra Alvarado Gallegos
 
Deir el Medina architecture
Deir el Medina architectureDeir el Medina architecture
Deir el Medina architecture
Alex Thompson
 
Critical Design Review Paper for Project A.R.E.S.
Critical Design Review Paper for Project A.R.E.S.Critical Design Review Paper for Project A.R.E.S.
Critical Design Review Paper for Project A.R.E.S.
Sung (Stephen) Kim
 
OKHANI TED MOST RECENT
OKHANI TED MOST RECENTOKHANI TED MOST RECENT
OKHANI TED MOST RECENTOKHANI TED
 
A hopeful response to school bullying
A hopeful response to school bullyingA hopeful response to school bullying
A hopeful response to school bullyingDebbie Iversen
 
The Center of National Economy - Stock Market
The Center of National Economy - Stock MarketThe Center of National Economy - Stock Market
The Center of National Economy - Stock Market
Kshitij Mohan Agarwal
 
Arthropoda (Chinthya Xie)
Arthropoda (Chinthya Xie)Arthropoda (Chinthya Xie)
Arthropoda (Chinthya Xie)
ChinthyaXie
 

Viewers also liked (7)

Leccinde vida24 2_2
Leccinde vida24 2_2Leccinde vida24 2_2
Leccinde vida24 2_2
 
Deir el Medina architecture
Deir el Medina architectureDeir el Medina architecture
Deir el Medina architecture
 
Critical Design Review Paper for Project A.R.E.S.
Critical Design Review Paper for Project A.R.E.S.Critical Design Review Paper for Project A.R.E.S.
Critical Design Review Paper for Project A.R.E.S.
 
OKHANI TED MOST RECENT
OKHANI TED MOST RECENTOKHANI TED MOST RECENT
OKHANI TED MOST RECENT
 
A hopeful response to school bullying
A hopeful response to school bullyingA hopeful response to school bullying
A hopeful response to school bullying
 
The Center of National Economy - Stock Market
The Center of National Economy - Stock MarketThe Center of National Economy - Stock Market
The Center of National Economy - Stock Market
 
Arthropoda (Chinthya Xie)
Arthropoda (Chinthya Xie)Arthropoda (Chinthya Xie)
Arthropoda (Chinthya Xie)
 

Minta zh1 mo_plusz

  • 1. Adatbázis alapú rendszerek 1. ZH  1. Feladat (2 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre:   létrehoz egy CEG nevű táblát, mely az alábbi mezőkkel rendelkezik:  o cegid: egész szám, mely az elsődleges kulcs  o cegnev: max. 30 karakter hosszú karaktersorozat  o tulaj: max. 40 karakter hosszú karaktersorozat  o reszv: max. 10 jegyű, 2 tizedesjeggyel bíró szám, értéke nem lehet NULL   kiírja a „Kérem a cég azonosítóját:” szöveget és bekér egy megfelelő típusú értéket   kiírja a „Kérem a cég nevét:” szöveget és bekér egy megfelelő típusú értéket   kiírja a „Kérem a tulajdonos nevét:” szöveget és bekér egy megfelelő típusú értéket   kiírja a „Kérem a cég részvényének értékét (Ft):” szöveget és bekér egy megfelelő típusú  értéket   beszúrja a táblába az előbbi paraméterekkel megadott rekordot   kivételkezelés segítségével kiírja a „Hiba: több azonos nevű létezik!” üzenetet, amennyiben  az új adat felvitelével több azonos nevű cég keletkezett  2. Feladat (2 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre:   létrehoz egy, a fenti CEG tábla rekordtípusával megegyező gyűjtőtáblát   a gyűjtőtáblába bemásolja 1‐től 10‐ig a páros azonosítóval rendelkező rekordok tartalmát a  CEG táblából   törli a gyűjtőtábla 4‐es indexű elemét   végül  a  gyűjtőtábla  első  és  utolsó  indexértékei  között  végigiterálva  kiírja  a  cég  nevét  és  részvényének értékét, de csak ha az adott indexértékhez létezik a gyűjtőtáblának sora  3. Feladat (3 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre:   kiírja a „Kérem a keresett tulajdonos nevét:” szöveget és bekér egy megfelelő típusú értéket   létrehoz a fenti CEG táblában szereplő, az előző lépésben megadott személy által tulajdonolt  cégek neveinek abc‐sorrendben való kilistázására egy explicit paraméterezett kurzort   a kurzor megnyitása után annak segítségével kiírja a rendezett listát   amennyiben  a  lista  nem  üres,  a  lista  után  közvetlenül  a  következő  sorba,  a  megfelelő  kurzorfüggvény  segítségével  kiírja  a  következő  szöveget:  „Összesen  N  cég  van  X.Y.  tulajdonában!”, ahol X.Y. az illető neve, N pedig a tulajdonában lévő cégek száma   amennyiben a lista üres, kiírja a következő üzenetet: „X.Y. nem szerepel az adatbázisban!”,  ahol X.Y. a keresett tulajdonos neve   végül lezárja kurzort  4. Feladat (3 pont): Írjunk PL/SQL kódot, mely a következőket hajtja végre:   kiírja a „Kérem a cég nevének részletét:” szöveget és bekér egy megfelelő típusú értéket   létrehoz egy explicit paraméterezett kurzort, mely a fenti CEG táblában szereplő, az előző  lépésben megadott sztringet a nevében tartalmazó cégek részvényeinek értékét megnöveli  5.0‐val   a kérdéses értékek módosítása előtt a sorokat zárolja más kódrészletek/tranzakciók elől   minden egyes növelés után kiírja az „Eddig X cég adatai módosultak!” szöveget, ahol X a  kurzor által eddig feldolgozott sorok száma 
  • 2. Megoldások:  -- 1. Feladat -- create table ceg ( cegid integer primary key, cegnev varchar2(30), tulaj varchar2(40), reszv number(10,2) not null ); set serveroutput on accept cid integer prompt 'Kérem a cég azonosítóját:' accept cnev prompt 'Kérem a cég nevét:' accept ctul prompt 'Kérem a tulajdonos nevét:' accept cert number(10,2) prompt 'Kérem a cég részvényének értékét (Ft):' insert into ceg values (&cid, '&cnev', '&ctul', &cert); declare nev ceg.cegnev%type; begin select cegnev into nev from ceg where cegnev LIKE '&cnev'; exception when too_many_rows then dbms_output.put_line('Hiba: több azonos nevű létezik!'); end; / -- 2. Feladat -- set serveroutput on declare type sortipus is table of ceg%rowtype index by binary_integer; gytabla sortipus; ind binary_integer := 2; begin while ind <= 10 loop select * into gytabla(ind) from ceg where cegid = ind; ind := ind + 2; end loop; gytabla.delete(4); for ind in gytabla.first..gytabla.last loop if gytabla.exists(ind) then dbms_output.put_line(gytabla(ind).cegnev || ': ' || gytabla(ind).reszv); end if; end loop; end; /
  • 3. -- 3. Feladat -- accept tnev prompt 'Kérem a tulajdonos nevét:' set serveroutput on declare cnev ceg.cegnev%type; cursor listaz (tul varchar2) is select cegnev from ceg where tulaj like tul order by cegnev; begin open listaz('&tnev'); loop fetch listaz into cnev; exit when listaz%notfound; dbms_output.put_line(cnev); end loop; if listaz%rowcount > 0 then dbms_output.put_line('Összesen ' || listaz%rowcount || ' ceg van ' || '&tnev' || ' tulajdonában!'); else dbms_output.put_line('&tnev' || ' nem szerepel az adatbázisban!'); end if; close listaz; end; / -- 4. Feladat -- accept cnev prompt 'Kérem a cég nevének részletét:'; set serveroutput on declare cursor novel(nev varchar2) is select * from ceg where cegnev like nev for update of reszv; begin for j in novel('%&cnev%') loop dbms_output.put_line('Eddig ' || novel%rowcount || ' cég adatai módosultak!'); update ceg set reszv = reszv + 5 where current of novel; end loop; end; /