Gyakorlaton megoldandó kötelező feladat!!! ------------------------------------------ Hozzunk létre mind a két adatbázisban (ullman, aramis) egy GYAK9 nevű két oszlopos táblát, aminek mindkét oszlopa VARCHAR2(100) típusú, majd töltsük fel a következő adatokkal (3 sorral). Az első oszlopba kerüljön be a következő osztályok neve: 'ACCOUNTING', RESEARCH', 'SALES', a második oszlopba pedig az adott osztályon előforduló foglalkozások neveiből összefűzött karakterlánc, például: 'CLERK-ANALYST-MANAGER-ANALYST-CLERK'. Tipp: használják az alábbi get_jobs() nevű függvényt. Határidő: a gyakorlat napján 23:59 Az eddig elkészített kötelező feladataikat ellenőrizni tudják a következő SQL lekérdezés futtatásával: SELECT object_name "TABLE", created FROM user_objects WHERE object_type='TABLE' AND object_name LIKE 'GYAK%' ORDER BY object_name; =========================================================================== /* SELECT ... INTO v1 Írjunk meg egy függvényt, amelyik visszaadja egy adott fizetési kategóriába tartozó dolgozók átlagfizetését. */ CREATE OR REPLACE FUNCTION kat_atlag(n integer) RETURN number IS Tesztelés: SELECT kat_atlag(2) FROM dual; ---------------------------------------------------------------- /* SELECT ... INTO v1, v2 Írjunk meg egy procedúrát, amelyik kiírja azon dolgozók számát és átlagfizetését, akiknek a belépési dátuma a paraméterül megadott nevű napon (pl. 'Hétfő') volt. */ CREATE OR REPLACE PROCEDURE nap_atl(d varchar2) IS Tesztelés: set serveroutput on execute nap_atl('Csütörtök'); -- példa output: Dolgozók száma: 4, Átlag fiz: 2481,25 Tippek: 1. to_char(hiredate, 'Day', 'nls_date_language=hungarian') 2. vigyázzunk a to_char által visszaadott nap névre, a végén szóközök lehetnek ---------------------------------------------------------------- /* Insert, Delete, Update Írjunk meg egy procedúrát, amelyik megnöveli azoknak a dolgozóknak a fizetését, akiknek a fizetési kategóriája ugyanaz, mint a procedúra paramétere. A növelés mértéke a dolgozó osztályában előforduló legkisebb fizetés legyen. A procedúra a módosítás után írja ki a fizetések átlagát két tizedesjegyre kerekítve. A procedúra a kiírás után adjon ki egy ROLLBACK utasítást, hogy megmaradjanak az eredeti fizetések, így a procedúrát többször is futtatni tudják. */ CREATE OR REPLACE PROCEDURE kat_novel(p_kategoria NUMBER) IS Tesztelés: set serveroutput on execute kat_novel(2); ---------------------------------------------------------------- /* Cursor (több soros SELECT) Írjunk meg egy procedúrát, amelyik veszi a paraméterül megadott osztály dolgozóit ábécé szerinti sorrendben, és kiírja a foglalkozásaikat egy karakterláncban összefűzve. */ CREATE OR REPLACE PROCEDURE print_jobs(o_nev varchar2) IS Tesztelés: set serveroutput on execute print_jobs('RESEARCH'); /* példa output: CLERK-ANALYST-MANAGER-ANALYST-CLERK */ ---------------------------------------------------------------- /* Cursor (több soros SELECT) Írjunk meg egy függvényt, amelyik veszi a paraméterül megadott osztály dolgozóit ábécé szerinti sorrendben, és visszaadja a foglalkozásaikat egy karakterláncban összefűzve. */ CREATE OR REPLACE FUNCTION get_jobs(o_nev varchar2) RETURN varchar2 IS Tesztelés: SELECT get_jobs('RESEARCH') FROM dual; /* példa output: CLERK-ANALYST-MANAGER-ANALYST-CLERK */ ---------------------------------------------------------------- /* Asszociatív tömb --> TABLE OF ... INDEX BY ... Írjunk meg egy procedúrát, amelyik veszi az első n prímszámot (1. prímszám: 2, 2. prímszám: 3, stb.) és beleteszi azokat egy asszociatív tömbbe. A procedúra a végén írja ki a tömb utolsó elemét és a prímszámok összegét. */ CREATE OR REPLACE PROCEDURE primes(n integer) IS Tesztelés: set serveroutput on execute primes(100); ---------------------------------------------------------------- /* Cursor és asszociatív tömb Írjunk meg egy procedúrát, amelyik veszi a dolgozókat ábácé szerinti sorrendben, és minden páratlan sorszámú dolgozó nevét és fizetését beleteszi egy asszociatív tömbbe. A procedúra a végén írja ki a tömb utolsó előtti elemében szereplő nevet és fizetést. */ CREATE OR REPLACE PROCEDURE curs_tomb IS Tesztelés: set serveroutput on execute curs_tomb(); ----------------------------------------------------------------