Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE TYPE ksiazka AS object (
- tytul VARCHAR2(30),
- autor VARCHAR2(30),
- licz_str NUMBER(4,0),
- cena FLOAT(5),
- data_wyd NUMBER(4,0)
- );
- CREATE TABLE Ksiazki OF Ksiazka;
- INSERT INTO Ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 300, 19.99, 1997));
- INSERT INTO Ksiazki VALUES('Tytul2', 'Autor2', 301, 20, 1999);
- SELECT * FROM ksiazki;
- SELECT VALUE(p) FROM ksiazki p;
- CREATE TABLE biblioteka (
- nazwa VARCHAR2(30),
- adres VARCHAR2(30),
- ksiazkaa ksiazka);
- INSERT INTO BIBLIOTEKA VALUES('bibl1', 'adres1', NEW Ksiazka('Tytul1', 'Autor1', 300, 19.99, 1997));
- SELECT * FROM BIBLIOTEKA;
- INSERT INTO BIBLIOTEKA VALUES('bibl1', 'adres1', NEW Ksiazka('Tytul2', 'Autor2', 313, 1.33, 1994));
- INSERT INTO BIBLIOTEKA VALUES('bibl1', 'adres1', NEW Ksiazka('Tytul3', 'Autor3', 355, 19, 1977));
- INSERT INTO BIBLIOTEKA VALUES('bibl2', 'adres2', NEW Ksiazka('Tytul2', 'Autor2', 313, 1.33, 1994));
- INSERT INTO BIBLIOTEKA VALUES('bibl3', 'adres3', NEW Ksiazka('Tytul3', 'Autor3', 355, 19, 1977));
- SELECT p.ksiazkaa.tytul FROM biblioteka p;
- CREATE TYPE ksiazka AS object (
- tytul VARCHAR2(30),
- autor VARCHAR2(30),
- licz_str NUMBER(5,0),
- cena FLOAT(10),
- data_wyd NUMBER(5,0)
- );
- ALTER TYPE ksiazka REPLACE AS object (
- tytul VARCHAR2(30),
- autor VARCHAR2(30),
- licz_str NUMBER(5,0),
- cena FLOAT(10),
- data_wyd NUMBER(5,0),
- member PROCEDURE liczWartosc,
- constructor FUNCTION ksiazka(
- tytul VARCHAR2,
- autor VARCHAR2,
- licz_str NUMBER,
- cena FLOAT,
- data_wyd NUMBER) RETURN self AS result,
- map member FUNCTION odwzoruj RETURN NUMBER
- );
- CREATE OR REPLACE TYPE BODY ksiazka AS
- member PROCEDURE liczWartosc IS
- BEGIN
- FOR licz IN 1..(EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - data_wyd) LOOP
- cena := cena * 0.95;
- END LOOP;
- END liczWartosc;
- constructor FUNCTION ksiazka(tytul VARCHAR2, autor VARCHAR2, licz_str NUMBER,
- cena FLOAT, data_wyd NUMBER) RETURN self AS result IS
- BEGIN
- self.tytul := tytul;
- self.autor := autor;
- self. licz_str := licz_str;
- self.cena := cena;
- self.data_wyd := data_wyd;
- liczwartosc();
- RETURN;
- END;
- map member FUNCTION odwzoruj RETURN NUMBER IS
- BEGIN
- RETURN data_wyd;
- END;
- END;
- CREATE TABLE ksiazki OF ksiazka;
- INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19.33, 1994));
- INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul2', 'Autor2', 33, 12.33, 2000));
- SELECT VALUE(k) FROM ksiazki k
- ALTER TYPE ksiazka ADD map member FUNCTION odwzoruj RETURN NUMBER CASCADE including TABLE data;
- SET serveroutput ON;
- DECLARE
- obj1 ksiazka := NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994);
- obj2 ksiazka := NEW Ksiazka('Tytul2', 'Autor2', 33, 22, 1994);
- BEGIN
- IF obj1 = obj2 THEN
- dbms_output.put_line('equals');
- ELSE
- dbms_output.put_line('not equals');
- END IF;
- END;
- CREATE TYPE czytelnik AS object (
- imie VARCHAR2(30),
- nazwisko VARCHAR2(30)
- );
- CREATE TYPE ksiazka AS object (
- tytul VARCHAR2(30),
- autor VARCHAR2(30),
- licz_str NUMBER(5,0),
- cena FLOAT(10),
- data_wyd NUMBER(5,0),
- czytelnikk REF czytelnik
- );
- ALTER TYPE ksiazka REPLACE AS object (
- tytul VARCHAR2(30),
- autor VARCHAR2(30),
- licz_str NUMBER(5,0),
- cena FLOAT(10),
- data_wyd NUMBER(5,0),
- czytelnikk REF czytelnik,
- member PROCEDURE liczWartosc,
- constructor FUNCTION ksiazka(
- tytul VARCHAR2,
- autor VARCHAR2,
- licz_str NUMBER,
- cena FLOAT,
- data_wyd NUMBER) RETURN self AS result,
- map member FUNCTION odwzoruj RETURN NUMBER
- );
- CREATE OR REPLACE TYPE BODY ksiazka AS
- member PROCEDURE liczWartosc IS
- BEGIN
- FOR licz IN 1..(EXTRACT(YEAR FROM CURRENT_TIMESTAMP) - data_wyd) LOOP
- cena := cena * 0.95;
- END LOOP;
- END liczWartosc;
- constructor FUNCTION ksiazka(tytul VARCHAR2, autor VARCHAR2, licz_str NUMBER,
- cena FLOAT, data_wyd NUMBER) RETURN self AS result IS
- BEGIN
- self.tytul := tytul;
- self.autor := autor;
- self. licz_str := licz_str;
- self.cena := cena;
- self.data_wyd := data_wyd;
- self.czytelnikk := NULL;
- liczwartosc();
- RETURN;
- END;
- map member FUNCTION odwzoruj RETURN NUMBER IS
- BEGIN
- RETURN data_wyd;
- END;
- END;
- CREATE TABLE czytelnicy OF czytelnik;
- INSERT INTO czytelnicy VALUES(NEW czytelnik('aaa', 'aaa'));
- INSERT INTO czytelnicy VALUES(NEW czytelnik('bbb', 'bbb'));
- INSERT INTO czytelnicy VALUES(NEW czytelnik('ccc', 'ccc'));
- CREATE TABLE ksiazki OF ksiazka;
- ALTER TABLE ksiazki ADD scope FOR(czytelnikk) IS czytelnicy;
- --insert into ksiazki values(new Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, new czytelnik('ddd', 'ddd')));
- INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, NULL));
- INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, (SELECT REF(c) FROM czytelnicy c WHERE imie LIKE 'aaa')));
- INSERT INTO ksiazki VALUES(NEW Ksiazka('Tytul1', 'Autor1', 313, 19, 1994, (SELECT REF(c) FROM czytelnicy c WHERE imie LIKE 'bbb')));
- SELECT * FROM ksiazki;
- SELECT DISTINCT * FROM ksiazki;
- SELECT k.czytelnikk.imie, k.czytelnikk.nazwisko FROM ksiazki k;
- SELECT k.tytul, k.autor, DEREF(k.czytelnikk) FROM ksiazki k;
- DELETE FROM czytelnicy WHERE imie LIKE 'bbb';
- UPDATE ksiazki SET czytelnikk = NULL WHERE czytelnikk IS dangling;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement