background image

 

 

SBD, L.Banachowski

Obiektowość w obiektowo-

Obiektowość w obiektowo-

relacyjnych bazach danych

relacyjnych bazach danych

 

 

na 

na 

przykładzie Oracle

przykładzie Oracle

Wykład 9

background image

 

 

SBD, L.Banachowski

Rodzaje obiekt

Rodzaje obiekt

ó

ó

w

w

1. Obiekty typów obiektowych

2. Duże obiekty LOB

background image

 

 

SBD, L.Banachowski

Znaczenie obiektowości w 

Znaczenie obiektowości w 

bazach danych 

bazach danych 

Na modelu obiektowo-relacyjnym oparty jest 

Standard języka SQL:1999. 

Typy obiektowe realizują zasadę abstrakcji w 

dwóch postaciach: 

abstrakcji proceduralnej polegającej na ukryciu 

szczegółów złożonych algorytmów poprzez 

opakowanie ich w procedury i funkcje; gdy w razie 

potrzeby zmieniamy procedurę - nie musimy 

modyfikować aplikacji jej używających; 

abstrakcji danych polegającej na ukryciu złożoności 

struktury danych przed użytkownikiem, który 

korzysta z tych danych; podobnie jak poprzednio, 

gdy w razie potrzeby zmieniamy strukturę danych – 

nie musimy modyfikować aplikacji jej używających. 

background image

 

 

SBD, L.Banachowski

Znaczenie obiektowości w 

Znaczenie obiektowości w 

bazach danych 

bazach danych 

Zalety użycia obu rodzajów abstrakcji w 

bazach danych: 

Ułatwione modelowanie rzeczywistych obiektów 

biznesowych. 

Zmniejszenie złożoności tworzenia aplikacji przez 

podział zadania na części. Ułatwienie dokonywania 

zmian. Ukrycie szczegółów implementacyjnych przed 

użytkownikiem. Modularność aplikacji i możliwość 

wielokrotnego użycia komponentów w tej samej lub 

w różnych aplikacjach. 

Zgrupowanie używanego kodu po stronie serwera 

wokół obiektów, na których kod działa. Uzyskanie 

większej kontroli nad kodem. 

Zastosowanie obiektowo-relacyjnego modelu danych 

prowadzi do zmniejszenia rozbieżności w modelach 

danych samej bazy danych i aplikacji bazodanowej 

napisanej w obiektowym języku programowania. Oba 

modele można oprzeć o te same pojęcia: klasy (typu 

obiektowego) i instancji klasy (obiektu).

background image

 

 

SBD, L.Banachowski

Atrybut

Atrybut

Metoda

Metoda

Id_zam

Id_zam

Info_klient

Info_klient

Pozycje

Pozycje

Status

Status

Zatrzymaj

Zatrzymaj

W

y

ś

w

W

y

ś

w

_S

ta

tu

s

_S

ta

tu

s

A

n

u

lu

j

A

n

u

lu

j

Wyślij

Wyślij

Typ obiektowy

Typ obiektowy

• Złożony typ danych definiowany przez 

użytkownika (odpowiadający pojęciu klasy w 
obiektowych językach programowania).

• Hermetyzuje strukturę danych łącznie z 

metodami potrzebnymi do operowania na 
strukturze danych.

Typ obiektowy: 
Zamówienia

background image

 

 

SBD, L.Banachowski

Ciał

Ciał

a metod

a metod

Publiczny

Publiczny

interfejs

interfejs

Prywatna 

Prywatna 

implementacj

implementacj

a

a

Deklaracje atrybut

Deklaracje atrybut

ó

ó

w

w

Specyfikacje metod

Specyfikacje metod

Specyfikacja typu

Specyfikacja typu

Ciało

Ciało

 typu

 typu

Struktura typu 

Struktura typu 

obiektowego

obiektowego

background image

 

 

SBD, L.Banachowski

CREATE TYPE nazwa_typu AS OBJECT
[(atrybut1 typdanych
,
  atrybut2 typdanych
,
  . . .]
[MEMBER procedura1
 | funkcja1 spec,
        procedura2 | funkcja2 spec,
        . . .)]

CREATE TYPE nazwa_typu AS OBJECT
[(atrybut1 typdanych
,
  atrybut2 typdanych
,
  . . .]
[MEMBER procedura1
 | funkcja1 spec,
        procedura2 | funkcja2 spec,
        . . .)]

Sk

Sk

ł

ł

adnia

adnia

Tworzenie specyfikacji typu 

Tworzenie specyfikacji typu 

obiektowego

obiektowego

background image

 

 

SBD, L.Banachowski

Sk

Sk

ł

ł

adnia

adnia

CREATE TYPE BODY nazwa_typu AS 
[MEMBER procedura1
 | funkcja1 spec,
        procedura2 | funkcja2 spec,
        . . .)]

CREATE TYPE BODY nazwa_typu AS 
[MEMBER procedura1
 | funkcja1 spec,
        procedura2 | funkcja2 spec,
        . . .)]

Tworzenie cia

Tworzenie cia

ł

ł

a typu 

a typu 

obiektowego

obiektowego

background image

 

 

SBD, L.Banachowski

SQL> CREATE TYPE name_typ AS OBJECT(
  2

 f_name

 VARCHAR2(25),

  3   l_name  VARCHAR2(25),

  4   initials

 varchar2(7),

  5  MEMBER FUNCTION full_name return 

varchar2,

  6  PRAGMA RESTRICT_REFERENCES( full_name, 

  7    WNDS, RNDS, WNPS, RNPS ));

Przyk

Przyk

ł

ł

ad 

ad 

– specyfikacja typu 

– specyfikacja typu 

nazwisk

nazwisk

background image

 

 

SBD, L.Banachowski

SQL> CREATE TYPE BODY name_typ AS
   2  MEMBER FUNCTION full_name RETURN VARCHAR2 
   3  IS   
   4  BEGIN
   5     RETURN (l_name || ' ' || f_name ); 
   6  END full_name;               
   7 END;

Przyk

Przyk

ł

ł

ad

ad

 – implementacja typu 

 – implementacja typu 

nazwisk

nazwisk

background image

 

 

SBD, L.Banachowski

SQL> CREATE TYPE emp_typ AS OBJECT(
  2 

emp_id   NUMBER(7), 

  3 

name     name_typ, 

--datatype is object type

  

  4 

street   VARCHAR2(25),

  5 

city     VARCHAR2(15),

  6

state    CHAR(2),

  7 

zip      INTEGER,

  8 

MEMBER FUNCTION get_name RETURN VARCHAR2, 

  9  PRAGMA RESTRICT_REFERENCES(get_name,
 10  WNDS, RNDS, WNPS, RNPS),
 

11 

MEMBER PROCEDURE set_l_name (v_name 

VARCHAR2)); 

Przyk

Przyk

ł

ł

ad

ad

 – specyfikacja typu 

 – specyfikacja typu 

pracowników

pracowników

background image

 

 

SBD, L.Banachowski

SQL> CREATE TYPE BODY emp_typ AS
  2   MEMBER FUNCTION get_name RETURN VARCHAR2 
  3   IS   
  4    BEGIN
  5     RETURN (name.l_name ||' '|| name.f_name ); 
  6   END;               
  7   MEMBER PROCEDURE set_l_name (v_name VARCHAR2)
  8   IS
  9   BEGIN
 10     name.l_name := v_name;
 11   END;
 12 

END; 

Przyk

Przyk

ł

ł

ad

ad

 – implementacja typu 

 – implementacja typu 

pracowników

pracowników

background image

 

 

SBD, L.Banachowski

Metody

Metody

Metody to funkcje lub procedury, które 

tworzymy w definicji typu obiektowego w celu 

zaimplementowania zachowania się obiektów 

danego typu. Aplikacja wywołuje metody, aby 

uzyskać w efekcie to zachowanie. Są trzy typy 

metod: metody składowe obiektów (metody 

typu MEMBER), metody konstruktorów 

obiektów (metody typu CONSTRUCTOR) oraz 

metody statyczne, czyli odnoszące się do 

całego typu (metody typu STATIC). W tym 

wykładzie rozważamy tylko metody składowe 

obiektów oraz metody konstruktora obiektów 

implementowane przez system – oprócz tego 

są jeszcze metody konstruktorów definiowane 

przez użytkowników. 

background image

 

 

SBD, L.Banachowski

SQL> CREATE TYPE Person AS OBJECT (
  2   firt VARCHAR2(50),
  3   last VARCHAR2(50)) NOT FINAL;
 
SQL>  CREATE TYPE Emp UNDER Person (
      salary NUMBER) FINAL;

SQL>  DECLARE
       x Emp:=Emp('Jan','Kowalski', 10000);
     BEGIN
       DBMS_OUTPUT.Put_line(x.first||' '||x.last
         ||' '||x.salary);
     END;

Dziedziczenie (9i)

Dziedziczenie (9i)

background image

 

 

SBD, L.Banachowski

Dla typów obiektowych, które mogą być 
wzorcami dla podtypów podlegając dalszemu 
dziedziczeniu, czyli takich, które nie są 
końcowe w hierarchii dziedziczenia, 
wymagana jest specyfikacja NOT FINAL. 
Domyślną specyfikacją jest FINAL - typ 
obiektowy nie podlega dalszemu 
dziedziczeniu. 

Dziedziczenie (9i)

Dziedziczenie (9i)

background image

 

 

SBD, L.Banachowski

CREATE TYPE Figure AS OBJECT (
NOT INSTANTIABLE MEMBER FUNCTION area RETURN NUMBER
  ) NOT INSTANTIABLE NOT FINAL;  
 
CREATE TYPE Rect UNDER Figure (
   x NUMBER, y NUMBER,          
   OVERRIDING MEMBER FUNCTION area RETURN NUMBER);
        
CREATE TYPE BODY Rect AS
   OVERRIDING MEMBER FUNCTION area RETURN NUMBER IS 
                                  
     BEGIN RETURN x*y; END;   
 END;

Przesłanianie

Przesłanianie

 (9i)

 (9i)

background image

 

 

SBD, L.Banachowski

Definicja metody area w podtypie Rect 
przesłania jej specyfikację w nadtypie Figure. 
Wymagane jest słowo kluczowe 
OVERRIDING. Domyślną specyfikacją 
metody jest NOT OVERRIDING. 
Słowo kluczowe NOT INSTANTIABLE dla 
typu obiektowego oznacza, że nie można 
tworzyć instancji danego typu obiektowego, 
a dla metody -  brak implementacji. 
Domyślną specyfikacją w obu przypadkach 
jest INSTANTIABLE.

Przesłanianie

Przesłanianie

 (9i)

 (9i)

background image

 

 

SBD, L.Banachowski

Informacje o typach obiektowych znajdują się w 

• USER_OBJECTS

Informacje o metodach typów obiektowych 

znajdują się w 

• USER_METHOD_PARAMS
• USER_METHOD_RESULTS
• USER_TYPE_METHODS

Informacje w słowniku danych 

Informacje w słowniku danych 

Oracle

Oracle

background image

 

 

SBD, L.Banachowski

Usuwanie typów 

Usuwanie typów 

obiektowych

obiektowych

Usuwanie typu obiektowego 

(specyfikacji i implementacji):

DROP TYPE typ;

Usuwanie implementacji typu 

obiektowego z pozostawieniem 

specyfikacji:

 DROP TYPE BODY typ_obiektowy

   W tym momencie do istniejących 

obiektów tego typu nie można 

zastosować żadnej z metod!

background image

 

 

SBD, L.Banachowski

Tworzenie tabeli obiektowej i 

Tworzenie tabeli obiektowej i 

wywoływanie metod

wywoływanie metod

• Zdefiniowanego typu obiektowego można 

używać do tworzenia tabel obiektowych tego 
typu.

• W utworzonej tabeli obiektowej są 

zapisywane obiekty typu obiektowego na tej 
samej zasadzie co wiersze tabeli relacyjnej. 
To znaczy, wartości atrybutów tworzą 
wiersz, na którym działają metody określone 
w danym typie obiektowym.

background image

 

 

SBD, L.Banachowski

CREATE TABLE nazwa_tabeli OF nazwa_typu
[(więzy spójności)]; 

Tworzenie tabeli obiektowej i 

Tworzenie tabeli obiektowej i 

wywoływanie metod

wywoływanie metod

background image

 

 

SBD, L.Banachowski

SQL>

CREATE TABLE name_table OF name_typ;

SQL>

INSERT INTO  name_table 

  2 

VALUES('Marilyn','Monroe','MM');

SQL>

INSERT INTO  name_table 

  2 

VALUES('Brigitte','Bardot','BB');

SQL>

SELECT f_name, l_name, nt.full_name()

  2 

FROM   name_table nt;

Przykład tabeli obiektowej

Przykład tabeli obiektowej

background image

 

 

SBD, L.Banachowski

SQL> CREATE TYPE tv_type AS OBJECT (
  2  tv_category  VARCHAR2(20),
  3  screen_size  NUMBER(4));

DECLARE
  v_new_tv    tv_type := tv_type('WEB tv', 32);
  v_alt_tv    tv_type;
BEGIN
  v_alt_tv := tv_type('Big Screen', 72);
END;

Metoda konstruktora 

Metoda konstruktora 

obiektu

obiektu

SQL> CREATE TABLE tv OF tv_type;
SQL> INSERT INTO tv VALUES(tv_type('Color tv', '28'));

background image

 

 

SBD, L.Banachowski

Typ obiektowy

Typ obiektowy

SQL> CREATE TABLE person_tab OF emp_typ;

Tabela obiektowa

Tabela obiektowa

SQL> CREATE TYPE emp_typ AS OBJECT(
  2 

emp_id   NUMBER(7), 

  3 

name     name_typ,

 

--datatype is object type

  

  4 

street   VARCHAR2(25),

  5 

city     VARCHAR2(15),

  6 

state    CHAR(2),

  7 

zip      INTEGER,

  8 

MEMBER FUNCTION get_name RETURN VARCHAR2 

  9   PRAGMA RESTRICT_REFERENCES(get_name,
 10   WNDS, RNDS, WNPS, RNPS),
 

11 

MEMBER PROCEDURE set_l_name (v_name 

VARCHAR2)); 

Operowanie obiektami

Operowanie obiektami

background image

 

 

SBD, L.Banachowski

SELECT VALUE(p) FROM person_tab p
   WHERE p.name.l_name LIKE '%BLAKE’;

SELECT * FROM person_tab p
   WHERE p.name.l_name LIKE '%BLAKE’;

SELECT na tabeli 

SELECT na tabeli 

obiektowej

obiektowej

Wynikiem zbiór wierszy:

Wynikiem zbiór wierszy:

Wynikiem zbiór obiektów reprezentowanych 

Wynikiem zbiór obiektów reprezentowanych 

przy użyciu konstruktora typu obiektowego:

przy użyciu konstruktora typu obiektowego:

 

VALUE(p) - oznacza obiekt wskazywany przez p.

background image

 

 

SBD, L.Banachowski

INSERT INTO person_tab
 VALUES(emp_typ(1, name_typ('Jan', 'Kowalski', 
'JK'), 'Andersa', 'Warszawa', 'PL', 1111);

insert into person_tab 
values(1, name_typ('Jan', 'Kowalski', 'JK'), 
'Andersa', 'Warszawa', 'PL', 1111);

INSERT do tabeli 

INSERT do tabeli 

obiektowej

obiektowej

Z użyciem konstruktora typu 

Z użyciem konstruktora typu 

obiektowego:

obiektowego:

Bezpo

Bezpo

ś

ś

redni

redni

o

o

:

: 

background image

 

 

SBD, L.Banachowski

UPDATE person_tab p 
 SET    p = emp_typ(2, name_typ('Anna', 'Kowalska', 
'AK'), 'Świętego Mikołaja', 'Warszawa', 'PL', 1111)
 WHERE  p.name.f_name = 'Anna';

UPDATE person_tab p 
 SET    p.street = 'Świętego Mikołaja'
 WHERE  p.name.l_name = 'Kowalska';

UPDATE na tabeli 

UPDATE na tabeli 

obiektowej

obiektowej

Z u

Z u

ż

ż

yciem konstruktora typu 

yciem konstruktora typu 

obiektowego

obiektowego:

background image

 

 

SBD, L.Banachowski

 DELETE FROM person_tab p
 WHERE  p.street = 'Andersa';

DELETE na tabeli 

DELETE na tabeli 

obiektowej

obiektowej

background image

 

 

SBD, L.Banachowski

Tabela relacyjna w 

Tabela relacyjna w 

obiektowo-relacyjnej bazie 

obiektowo-relacyjnej bazie 

danych 

danych 

Możemy używać tabel relacyjnych z 
kolumnami typów obiektowych. Wartościami 
wpisywanymi do kolumn tabeli mogą więc być 
instancje typów obiektowych.

CREATE TABLE Emp1(  

-- tabela relacyjna

   Empno NUMBER PRIMARY KEY,
   Name Name_typ,   

-- kolumna typu obiektowego

   Sal NUMBER,
   Kier REFERENCES Emp1); 

background image

 

 

SBD, L.Banachowski

Typ referencyjny

Typ referencyjny

Dla każdego typu obiektowego Type jest 
automatycznie definiowany jego typ 
referencyjny oznaczany przez REF 
Type
. Typu tego można używać jako 
typu atrybutów obiektów bądź kolumn 
w tabeli relacyjnej. Daje to możliwość 
wiązania wartości atrybutu bądź 
wartości w kolumnie z innym obiektem 
podobnie jak klucz obcy odwołuje się do 
klucza głównego. Jest to alternatywny 
sposób tworzenia powiązań.

background image

 

 

SBD, L.Banachowski

Typ referencyjny

Typ referencyjny

CREATE TYPE Dept_Type AS 
OBJECT(

Name VARCHAR2(10),

Loc VARCHAR2(50));

CREATE TYPE Emp_Type AS 

OBJECT(

Name VARCHAR2(20),

Sal Number,

Dept_ref REF Dept_Type

 );

CREATE TABLE Obj_Emp OF 

Emp_Type

(Dept_ref SCOPE IS 

Obj_Dept)

;

 CREATE TABLE 

Rel_emp(

 Id NUMBER 

PRIMARY KEY,

 Name 

VARCHAR2(20),

 Sal Number,

 

Dept_ref REF 

Dept_Type 

             SCOPE IS 

Obj_Dept)

;

CREATE TABLE 

Obj_Dept OF 

Dept_Type;

SCOPE IS jest 
konieczne, ponieważ 
istnieje możliwość 
tworzenia wielu tabel 
jednego typu.

background image

 

 

SBD, L.Banachowski

Kolekcje

Kolekcje

Atrybut typu obiektowego lub kolumna może 
być typu kolekcji:

1. VARRAY – typ tablicy jednowymiarowej (jak 
wektor);

2. TABLE – typ tabeli zagnieżdżonej. 

background image

 

 

SBD, L.Banachowski

Przykład zastosowania typu 

Przykład zastosowania typu 

VARRAY

VARRAY

CREATE TYPE Projekt AS 

OBJECT ( Num_proj 
NUMBER(3), 
Tytuł VARCHAR2(35), 
Koszt NUMBER(7,2));

CREATE TYPE 
Lista AS 
VARRAY(3) OF 
Projekt;

CREATE TABLE 
Wydziały ( 
Id_wydz NUMBER(2), 
Nazwa VARCHAR2(15), 
Budżet NUMBER(11,2), 

Projekty Lista

);

 

INSERT INTO Wydziały 
VALUES(1,'Informatyka',100000, 

Lista(Projekt(1,'Analiza',123), 
Projekt(2,'Projekt',456))

); 

background image

 

 

SBD, L.Banachowski

Przykład zastosowania typu 

Przykład zastosowania typu 

VARRAY

VARRAY

w kodzie PL/SQL do poszczególnych 

elementów kolekcji można dostawać się 

używając naturalnej dla tablic składni:

  Nazwa_kolekcji(wskaźnik

CREATE OR REPLACE PROCEDURE Wypisz AS
   lis Lista;
BEGIN
   FOR z IN (SELECT * FROM Wydziały) LOOP
      DBMS_OUTPUT.Put_line('Projekty Wydziału: '||
z.Nazwa);
      lis:=z.Projekty;
      FOR i IN 1..lis.Count LOOP
        DBMS_OUTPUT.Put_line(lis(i).Num_proj||' '||
lis(i).Tytuł);
      END LOOP;
   END LOOP;
END;

background image

SBD, L.Banachowski

Duże obiekty LOB

Duże obiekty LOB

W Oracle są cztery rodzaje dużych 

obiektów LOB:

1.BLOB – binarny duży obiekt - strumień 

bitów jak w przypadku LONG RAW. 

2.CLOB – znakowy duży obiekt - 

strumień znaków (pojedynczych bajtów). 

3.NCLOB – uogólniony (dla języków 

narodowych wielobajtowych) znakowy 
duży obiekt. 

4.BFILE – plik binarny przechowywany 

poza bazą danych. 

background image

SBD, L.Banachowski

Przepis

(CLOB)

Foto

(BLOB)

Film

Film

(BFILE)

(BFILE)

Duże obiekty LOB

Duże obiekty LOB

background image

SBD, L.Banachowski

DECLARE
  lobloc BLOB;
BEGIN
  SELECT col1 INTO lobloc
  FROM LOB_Table WHERE col2=123; 
END;

Warto

Warto

ść

ść

 

 

 LOB

 LOB

Lokator 

Lokator 

LOB

LOB

Anatomia obiektu LOB

Anatomia obiektu LOB

background image

SBD, L.Banachowski

Przepis

(CLOB)

Foto

(BLOB)

Wewnętrzne obiekty LOB

Wewnętrzne obiekty LOB

background image

SBD, L.Banachowski

SQL> CREATE TABLE employee
  2  (emp_id     NUMBER,
  3  emp_name    VARCHAR2(35),
  4  resume      CLOB,
  5  picture     BLOB);  

Tabela z obiektami LOB

Tabela z obiektami LOB

background image

SBD, L.Banachowski

Film 

Film 

(BFILE)

(BFILE)

Atrybut typu 

obiektowego

Kolumna w tabeli

Zewnętrzne obiekty LOB - 

Zewnętrzne obiekty LOB - 

zapisywane w pliku systemu 

zapisywane w pliku systemu 

operacyjnego

operacyjnego

background image

SBD, L.Banachowski

Film (BFILE)

Film (BFILE)

DIRECTOR

DIRECTOR

Y

Y

lob_path = 

lob_path = 

'/oracle/lob/'

'/oracle/lob/'

Katalog DIRECTORY

Katalog DIRECTORY

background image

SBD, L.Banachowski

Katalog DIRECTORY

Katalog DIRECTORY

Katalog jest to obiekt bazodanowy 
reprezentujący katalog systemu 
operacyjnego. Służy do 
administrowania dostępem do 
obiektów bazy danych typu BFILE 
przechowywanych w plikach poza bazą 
danych. Fizyczny katalog jest tworzony 
pod systemem operacyjnym z 
uprawnieniami odczytu dla procesów 
Oracle. Pliki w tym katalogu nie mogą 
być ani zmieniane ani usuwane przez 
system Oracle. 

background image

SBD, L.Banachowski

Posługiwanie się obiektami 

Posługiwanie się obiektami 

LOB

LOB

•    Pakiet DBMS_LOB
•    Wsparcie w SQL - tabele
•    Katalog DIRECTORY

background image

SBD, L.Banachowski

SQL> UPDATE employee SET resume =
  2> (SELECT resume FROM employee
  3>  WHERE emp_name='Default')
  4>  WHERE emp_id = 4508;

SQL> INSERT INTO employee VALUES 
  2>  (7898,'Marilyn Monroe', EMPTY_CLOB(), NULL);

Wstawianie obiektów LOB

Wstawianie obiektów LOB

SQL> INSERT INTO employee VALUES 
  2>  (7897,'Jan Kowalski','Znakomity aktor', 
NULL);

background image

SBD, L.Banachowski

DECLARE

  lobloc CLOB;  --lokator LOB

  text VARCHAR2(2000);

  amount NUMBER ;

  offset INTEGER;

BEGIN

  text := 'tekst do wpisania do LOB';

  SELECT resume INTO lobloc     -- lokator LOB

  FROM employee 

  WHERE emp_id = 5887 FOR UPDATE;

  offset := DBMS_LOB.GETLENGTH(lobloc) + 1;

  amount := length(text);

  DBMS_LOB.WRITE (lobloc, amount, offset, text);

  COMMIT;

  DBMS_OUTPUT.PUT_LINE('Wpisano ' || 

   to_char(amount) ||'  znaków');                    

              

END;

Dopisywanie do obiektów LOB 

Dopisywanie do obiektów LOB 

w PL/SQL

w PL/SQL

background image

SBD, L.Banachowski

SQL>DELETE FROM person_tab
  2 WHERE pname = 'Opie Griffith';

SQL>UPDATE person_tab SET resume = EMPTY_CLOB()
  2 WHERE pname = 'Laura Roshto';

Usuwanie obiektów LOB

Usuwanie obiektów LOB

Usunięcie wiersza z obiektem LOB:

Usunięcie obiektu LOB w wierszu:

background image

SBD, L.Banachowski

COMPARE

FILEGETNAME

INSTR

GETLENGTH

READ

SUBSTR

FILEEXISTS

FILEISOPEN

APPEND

COPY

ERASE

TRIM

WRITE

FILECLOSE

FILECLOSEALL

FILEOPEN

Modyfikacje

Tylko-odczyt

Pakiet DBMS_LOB

Pakiet DBMS_LOB

background image

SBD, L.Banachowski

PROCEDURE READ (
 

lobsrc IN BFILE|BLOB|CLOB , 

 

amount IN OUT BINARY_INTEGER, 
offset IN INTEGER,
buffer OUT RAW|VARCHAR2 )

PROCEDURE WRITE ( 

lobdst IN OUT BLOB|CLOB, 
amount IN OUT BINARY_INTEGER, 
offset IN INTEGER := 1,
buffer IN RAW|VARCHAR2 )  -- RAW dla BLOB

READ i WRITE

READ i WRITE


Document Outline