Advertisement
Guest User

Untitled

a guest
Jun 11th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE TYPE ksiazka AS object (
  2.     tytul VARCHAR2(30),
  3.     autor VARCHAR2(30),
  4.     licz_str NUMBER(4,0),
  5.     cena FLOAT(5),
  6.     data_wyd NUMBER(4,0)
  7. );
  8.  
  9. CREATE TABLE Ksiazki OF Ksiazka;
  10. INSERT INTO Ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 300, 19.99, 1997));
  11. INSERT INTO Ksiazki VALUES('Tytul2', 'Autor2', 301, 20, 1999);
  12. SELECT * FROM ksiazki;
  13. SELECT VALUE(p) FROM ksiazki p;
  14.  
  15. CREATE TABLE biblioteka (
  16.     nazwa VARCHAR2(30),
  17.     adres VARCHAR2(30),
  18.     ksiazkaa ksiazka);
  19.    
  20. INSERT INTO BIBLIOTEKA VALUES('bibl1', 'adres1', NEW Ksiazka('Tytul1', 'Autor1', 300, 19.99, 1997));
  21.  
  22. SELECT * FROM BIBLIOTEKA;
  23.  
  24. INSERT INTO BIBLIOTEKA VALUES('bibl1', 'adres1', NEW Ksiazka('Tytul2', 'Autor2', 313, 1.33, 1994));
  25. INSERT INTO BIBLIOTEKA VALUES('bibl1', 'adres1', NEW Ksiazka('Tytul3', 'Autor3', 355, 19, 1977));
  26. INSERT INTO BIBLIOTEKA VALUES('bibl2', 'adres2', NEW Ksiazka('Tytul2', 'Autor2', 313, 1.33, 1994));
  27. INSERT INTO BIBLIOTEKA VALUES('bibl3', 'adres3', NEW Ksiazka('Tytul3', 'Autor3', 355, 19, 1977));
  28.  
  29. SELECT p.ksiazkaa.tytul FROM biblioteka p;
  30.  
  31. CREATE TYPE ksiazka AS object (
  32.     tytul VARCHAR2(30),
  33.     autor VARCHAR2(30),
  34.     licz_str NUMBER(5,0),
  35.     cena FLOAT(10),
  36.     data_wyd NUMBER(5,0)
  37. );
  38.  
  39. ALTER TYPE ksiazka REPLACE AS object (
  40.     tytul VARCHAR2(30),
  41.     autor VARCHAR2(30),
  42.     licz_str NUMBER(5,0),
  43.     cena FLOAT(10),
  44.     data_wyd NUMBER(5,0),
  45.     member PROCEDURE liczWartosc,
  46.     constructor FUNCTION ksiazka(
  47.         tytul VARCHAR2,
  48.         autor VARCHAR2,
  49.         licz_str NUMBER,
  50.         cena FLOAT,
  51.         data_wyd NUMBER) RETURN self AS result,
  52.     map member FUNCTION odwzoruj RETURN NUMBER
  53. );
  54.  
  55. CREATE OR REPLACE TYPE BODY ksiazka AS
  56.     member PROCEDURE liczWartosc IS
  57.         BEGIN
  58.             FOR licz IN 1..(EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - data_wyd) LOOP
  59.                 cena := cena * 0.95;
  60.             END LOOP;
  61.         END liczWartosc;
  62.     constructor FUNCTION ksiazka(tytul VARCHAR2, autor VARCHAR2, licz_str NUMBER,
  63.                                     cena FLOAT, data_wyd NUMBER) RETURN self AS result IS
  64.         BEGIN
  65.             self.tytul := tytul;
  66.             self.autor := autor;
  67.             self. licz_str := licz_str;
  68.             self.cena := cena;
  69.             self.data_wyd := data_wyd;
  70.             liczwartosc();
  71.             RETURN;
  72.         END;
  73.     map member FUNCTION odwzoruj RETURN NUMBER IS
  74.         BEGIN
  75.             RETURN data_wyd;
  76.         END;
  77. END;
  78.  
  79. CREATE TABLE ksiazki OF ksiazka;
  80.  
  81. INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19.33, 1994));
  82. INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul2', 'Autor2', 33, 12.33, 2000));
  83.  
  84. SELECT VALUE(k) FROM ksiazki k
  85.  
  86. ALTER TYPE ksiazka ADD map member FUNCTION odwzoruj RETURN NUMBER CASCADE including TABLE data;
  87.  
  88. SET serveroutput ON;
  89.  
  90. DECLARE
  91.     obj1 ksiazka := NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994);
  92.     obj2 ksiazka := NEW Ksiazka('Tytul2', 'Autor2', 33, 22, 1994);
  93. BEGIN
  94.     IF obj1 = obj2 THEN
  95.         dbms_output.put_line('equals');
  96.     ELSE
  97.         dbms_output.put_line('not equals');
  98.     END IF;
  99. END;
  100.  
  101. CREATE TYPE czytelnik AS object (
  102.     imie VARCHAR2(30),
  103.     nazwisko VARCHAR2(30)
  104. );
  105.  
  106. CREATE TYPE ksiazka AS object (
  107.     tytul VARCHAR2(30),
  108.     autor VARCHAR2(30),
  109.     licz_str NUMBER(5,0),
  110.     cena FLOAT(10),
  111.     data_wyd NUMBER(5,0),
  112.     czytelnikk REF czytelnik
  113. );
  114.  
  115. ALTER TYPE ksiazka REPLACE AS object (
  116.     tytul VARCHAR2(30),
  117.     autor VARCHAR2(30),
  118.     licz_str NUMBER(5,0),
  119.     cena FLOAT(10),
  120.     data_wyd NUMBER(5,0),
  121.     czytelnikk REF czytelnik,
  122.     member PROCEDURE liczWartosc,
  123.     constructor FUNCTION ksiazka(
  124.         tytul VARCHAR2,
  125.         autor VARCHAR2,
  126.         licz_str NUMBER,
  127.         cena FLOAT,
  128.         data_wyd NUMBER) RETURN self AS result,
  129.     map member FUNCTION odwzoruj RETURN NUMBER
  130. );
  131.  
  132. CREATE OR REPLACE TYPE BODY ksiazka AS
  133.     member PROCEDURE liczWartosc IS
  134.         BEGIN
  135.             FOR licz IN 1..(EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - data_wyd) LOOP
  136.                 cena := cena * 0.95;
  137.             END LOOP;
  138.         END liczWartosc;
  139.     constructor FUNCTION ksiazka(tytul VARCHAR2, autor VARCHAR2, licz_str NUMBER,
  140.                                     cena FLOAT, data_wyd NUMBER) RETURN self AS result IS
  141.         BEGIN
  142.             self.tytul := tytul;
  143.             self.autor := autor;
  144.             self. licz_str := licz_str;
  145.             self.cena := cena;
  146.             self.data_wyd := data_wyd;
  147.             self.czytelnikk := NULL;
  148.             liczwartosc();
  149.             RETURN;
  150.         END;
  151.     map member FUNCTION odwzoruj RETURN NUMBER IS
  152.         BEGIN
  153.             RETURN data_wyd;
  154.         END;
  155. END;
  156.  
  157. CREATE TABLE czytelnicy OF czytelnik;
  158.  
  159. INSERT INTO czytelnicy VALUES(NEW czytelnik('aaa', 'aaa'));
  160. INSERT INTO czytelnicy VALUES(NEW czytelnik('bbb', 'bbb'));
  161. INSERT INTO czytelnicy VALUES(NEW czytelnik('ccc', 'ccc'));
  162.  
  163. CREATE TABLE ksiazki OF ksiazka;
  164. ALTER TABLE ksiazki ADD scope FOR(czytelnikk) IS czytelnicy;
  165.  
  166. --insert into ksiazki values(new Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, new czytelnik('ddd', 'ddd')));
  167. INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, NULL));
  168. INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, (SELECT REF(c) FROM czytelnicy c WHERE imie LIKE 'aaa')));
  169. INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, (SELECT REF(c) FROM czytelnicy c WHERE imie LIKE 'bbb')));
  170.  
  171. SELECT * FROM ksiazki;
  172. SELECT DISTINCT * FROM ksiazki;
  173. SELECT k.czytelnikk.imie, k.czytelnikk.nazwisko FROM ksiazki k;
  174. SELECT k.tytul, k.autor, DEREF(k.czytelnikk) FROM ksiazki k;
  175.  
  176. DELETE FROM czytelnicy WHERE imie LIKE 'bbb';
  177. UPDATE ksiazki SET czytelnikk = NULL WHERE czytelnikk IS dangling;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement