Minta zh1 mo_plusz

50 %
50 %
Information about Minta zh1 mo_plusz
Education

Published on March 21, 2014

Author: ttasi86

Source: slideshare.net

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; /

Add a comment

Related presentations