1 oracle 8. 2 new features 3 oracle 8 new features abstract data types new features abstract data...

71
1 Oracle 8

Upload: lesley-mills

Post on 03-Jan-2016

227 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

1

Oracle 8Oracle 8

Page 2: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

2

Oracle 8Oracle 8

• New features• New features

Page 3: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

3

Oracle 8Oracle 8

• New features

Abstract data types

• New features

Abstract data types

Page 4: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

4

Oracle 8Oracle 8

• New features

Abstract data types

Nested tables

• New features

Abstract data types

Nested tables

Page 5: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

5

Oracle 8Oracle 8

• New features

Abstract data types

Nested tables

Varying arrays

• New features

Abstract data types

Nested tables

Varying arrays

Page 6: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

6

Oracle 8Oracle 8

• New features

Abstract data types

Nested tables

Varying arrays

Large objects

• New features

Abstract data types

Nested tables

Varying arrays

Large objects

Page 7: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

7

Oracle 8Oracle 8

• New features

Abstract data types

Nested tables

Varying arrays

Large objects

References

• New features

Abstract data types

Nested tables

Varying arrays

Large objects

References

Page 8: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

8

Oracle 8Oracle 8

• New features

Abstract data types

Nested tables

Varying arrays

Large objects

References

Object views

• New features

Abstract data types

Nested tables

Varying arrays

Large objects

References

Object views

Page 9: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

9

Oracle 8Oracle 8

• Abstract data types• Abstract data types

Page 10: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

10

Oracle 8Oracle 8

• Abstract data types

CREATE TYPE statement

CREATE TYPE ADDRESS_TYPE AS OBJECT

(Street VARCHAR2(50),

City VARCHAR2(25),

State VARCHAR(3),

Zip NUMBER(4) );

• Abstract data types

CREATE TYPE statement

CREATE TYPE ADDRESS_TYPE AS OBJECT

(Street VARCHAR2(50),

City VARCHAR2(25),

State VARCHAR(3),

Zip NUMBER(4) );

Page 11: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

11

Oracle 8Oracle 8

• Abstract data types

CREATE TYPE statement

CREATE TYPE ADDRESS_TYPE AS OBJECT

(Street VARCHAR2(50),

City VARCHAR2(25),

State VARCHAR(3),

Zip NUMBER(4) );

CREATE TYPE PERSON_TYPE AS OBJECT

(Name VARCHAR2(30),

Address ADDRESS_TYPE );

• Abstract data types

CREATE TYPE statement

CREATE TYPE ADDRESS_TYPE AS OBJECT

(Street VARCHAR2(50),

City VARCHAR2(25),

State VARCHAR(3),

Zip NUMBER(4) );

CREATE TYPE PERSON_TYPE AS OBJECT

(Name VARCHAR2(30),

Address ADDRESS_TYPE );

Page 12: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

12

Oracle 8Oracle 8

• Abstract data types

CREATE TABLE statement

CREATE TABLE CUSTOMER

(Customer_ID NUMBER(6),

Person PERSON_TYPE );

• Abstract data types

CREATE TABLE statement

CREATE TABLE CUSTOMER

(Customer_ID NUMBER(6),

Person PERSON_TYPE );

Page 13: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

13

Oracle 8Oracle 8

• Abstract data types

CREATE TABLE statement

CREATE TABLE CUSTOMER

(Customer_ID NUMBER(6),

Person PERSON_TYPE );

CREATE TABLE DEPARTMENT

(Dept_Name VARCHAR2(20),

Address ADDRESS_TYPE) );

• Abstract data types

CREATE TABLE statement

CREATE TABLE CUSTOMER

(Customer_ID NUMBER(6),

Person PERSON_TYPE );

CREATE TABLE DEPARTMENT

(Dept_Name VARCHAR2(20),

Address ADDRESS_TYPE) );

Page 14: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

14

Oracle 8Oracle 8

• Abstract data types

INSERT INTO statement

INSERT INTO CUSTOMER VALUES (

1,

PERSON_TYPE(‘Mike Jones’,

ADDRESS_TYPE(‘Penny St.’, ‘London’, ‘HK’, 1234)));

• Abstract data types

INSERT INTO statement

INSERT INTO CUSTOMER VALUES (

1,

PERSON_TYPE(‘Mike Jones’,

ADDRESS_TYPE(‘Penny St.’, ‘London’, ‘HK’, 1234)));

Page 15: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

15

Oracle 8Oracle 8

• Abstract data types

INSERT INTO statement

INSERT INTO CUSTOMER VALUES (

1,

PERSON_TYPE(‘Mike Jones’,

ADDRESS_TYPE(‘Penny St.’, ‘London’, ‘HK’, 1234)));

INSERT INTO DEPARTMENT VALUES(

‘SITACS’,

ADDRESS_TYPE(‘Northfields Ave.’, ‘Wollongong’,

‘NSW’, 2522) );

• Abstract data types

INSERT INTO statement

INSERT INTO CUSTOMER VALUES (

1,

PERSON_TYPE(‘Mike Jones’,

ADDRESS_TYPE(‘Penny St.’, ‘London’, ‘HK’, 1234)));

INSERT INTO DEPARTMENT VALUES(

‘SITACS’,

ADDRESS_TYPE(‘Northfields Ave.’, ‘Wollongong’,

‘NSW’, 2522) );

Page 16: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

16

Oracle 8Oracle 8

• Abstract data types

SELECT statement

– SELECT Customer_id, Person.Name

– FROM Customer

– WHERE Person.Address.City = ‘London’;

– SELECT *

– FROM Department;

• Abstract data types

SELECT statement

– SELECT Customer_id, Person.Name

– FROM Customer

– WHERE Person.Address.City = ‘London’;

– SELECT *

– FROM Department;

Page 17: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

17

Oracle 8Oracle 8

• Abstract data types

DROP TYPE statement

DROP TYPE PERSON_TYPE

• Abstract data types

DROP TYPE statement

DROP TYPE PERSON_TYPE

Page 18: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

18

Oracle 8Oracle 8

• Abstract data types

DROP TYPE statement

DROP TYPE PERSON_TYPE

CREATE OR REPLACE TYPE statement

CREATE OR REPLACE TYPE ADDRESS_TYPE AS OBJECT

(Street VARCHAR2(50),

City VARCHAR2(25) );

• Abstract data types

DROP TYPE statement

DROP TYPE PERSON_TYPE

CREATE OR REPLACE TYPE statement

CREATE OR REPLACE TYPE ADDRESS_TYPE AS OBJECT

(Street VARCHAR2(50),

City VARCHAR2(25) );

Page 19: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

19

Oracle 8Oracle 8

• Indexing abstract data type attributes• Indexing abstract data type attributes

Page 20: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

20

Oracle 8Oracle 8

• Indexing abstract data type attributes

CREATE INDEX statement

CREATE INDEX CUST_IDX ON

Customer(Person.Address.City) ;

• Indexing abstract data type attributes

CREATE INDEX statement

CREATE INDEX CUST_IDX ON

Customer(Person.Address.City) ;

Page 21: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

21

Oracle 8Oracle 8

• Object views

• Object views

Page 22: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

22

Oracle 8Oracle 8

• Object views

CREATE TABLE CUSTOMER

(Customer_Id NUMBER(6) PRIMARY KEY,

Name VARCHAR2(30),

Street VARCHAR2(50),

City VARCHAR2(20),

State CHAR(3),

Zip NUMBER(4) );

• Object views

CREATE TABLE CUSTOMER

(Customer_Id NUMBER(6) PRIMARY KEY,

Name VARCHAR2(30),

Street VARCHAR2(50),

City VARCHAR2(20),

State CHAR(3),

Zip NUMBER(4) );

Page 23: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

23

Oracle 8Oracle 8

• Object views

CREATE TYPE ADDRESS_TYPE AS OBJECT

Street VARCHAR2(50),

City VARCHAR2(20),

State CHAR(3),

Zip NUMBER(4) );

• Object views

CREATE TYPE ADDRESS_TYPE AS OBJECT

Street VARCHAR2(50),

City VARCHAR2(20),

State CHAR(3),

Zip NUMBER(4) );

Page 24: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

24

Oracle 8Oracle 8

• Object views

CREATE TYPE ADDRESS_TYPE AS OBJECT

Street VARCHAR2(50),

City VARCHAR2(20),

State CHAR(3),

Zip NUMBER(4) );

CREATE TYPE PERSON_TYPE AS OBJECT

(Name VARCHAR2(30),

Address ADDRESS_TYPE );

• Object views

CREATE TYPE ADDRESS_TYPE AS OBJECT

Street VARCHAR2(50),

City VARCHAR2(20),

State CHAR(3),

Zip NUMBER(4) );

CREATE TYPE PERSON_TYPE AS OBJECT

(Name VARCHAR2(30),

Address ADDRESS_TYPE );

Page 25: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

25

Oracle 8Oracle 8

• Object views

CREATE VIEW CUSTOMER_V (Customer_ID, Person) AS

SELECT Customer_ID,

PERSON_TYPE(Name,

ADDRESS_TYPE(Street, City, State,Zip) )

FROM CUSTOMER

WHERE State = ‘NSW’;

• Object views

CREATE VIEW CUSTOMER_V (Customer_ID, Person) AS

SELECT Customer_ID,

PERSON_TYPE(Name,

ADDRESS_TYPE(Street, City, State,Zip) )

FROM CUSTOMER

WHERE State = ‘NSW’;

Page 26: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

26

Oracle 8Oracle 8

• Object views

Create flat relational table

• Object views

Create flat relational table

Page 27: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

27

Oracle 8Oracle 8

• Object views

Create flat relational table

Create abstract data types

• Object views

Create flat relational table

Create abstract data types

Page 28: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

28

Oracle 8Oracle 8

• Object views

Create flat relational table

Create abstract data types

Create object view

• Object views

Create flat relational table

Create abstract data types

Create object view

Page 29: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

29

Oracle 8Oracle 8

• Methods• Methods

Page 30: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

30

Oracle 8Oracle 8

• Methods

CREATE TYPE PERSON_TYPE AS OBJECT

(Name VARCHAR2(30),

Address ADDRESS_TYPE,

BithDate DATE,

MEMBER FUNCTION Age( BirthDate IN DATE)

RETURN NUMBER );

• Methods

CREATE TYPE PERSON_TYPE AS OBJECT

(Name VARCHAR2(30),

Address ADDRESS_TYPE,

BithDate DATE,

MEMBER FUNCTION Age( BirthDate IN DATE)

RETURN NUMBER );

Page 31: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

31

Oracle 8Oracle 8

• Methods

CREATE TYPE BODY PERSON_TYPE AS

MEMBER FUNCTION Age( BirthDate IN DATE)

RETURN NUMBER IS

BEGIN

RETURN ROUND(SysDate - BirthDate);

END;

END;

/

• Methods

CREATE TYPE BODY PERSON_TYPE AS

MEMBER FUNCTION Age( BirthDate IN DATE)

RETURN NUMBER IS

BEGIN

RETURN ROUND(SysDate - BirthDate);

END;

END;

/

Page 32: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

32

Oracle 8Oracle 8

• Methods

CREATE TABLE STUDENT

(SID NUMBER(6),

PERSON PERSON_TYPE );

SELECT STUDENT.Age(Student.BirthDate)

FROM STUDENT;

• Methods

CREATE TABLE STUDENT

(SID NUMBER(6),

PERSON PERSON_TYPE );

SELECT STUDENT.Age(Student.BirthDate)

FROM STUDENT;

Page 33: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

33

Oracle 8Oracle 8

• Collectors• Collectors

Page 34: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

34

Oracle 8Oracle 8

• Collectors

Varying arrays

• Collectors

Varying arrays

Page 35: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

35

Oracle 8Oracle 8

• Collectors

Varying arrays

Nested tables

• Collectors

Varying arrays

Nested tables

Page 36: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

36

Oracle 8Oracle 8

• Varying arrays• Varying arrays

Page 37: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

37

Oracle 8Oracle 8

• Varying arrays

CREATE TYPE TOOL_TYPE AS OBJECT

(ToolName VARCHAR2(30) );

• Varying arrays

CREATE TYPE TOOL_TYPE AS OBJECT

(ToolName VARCHAR2(30) );

Page 38: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

38

Oracle 8Oracle 8

• Varying arrays

CREATE TYPE TOOL_TYPE AS OBJECT

(ToolName VARCHAR2(30) );

CREATE TYPE TOOLS_VA AS VARRAY(5) OF

TOOL_TYPE;

• Varying arrays

CREATE TYPE TOOL_TYPE AS OBJECT

(ToolName VARCHAR2(30) );

CREATE TYPE TOOLS_VA AS VARRAY(5) OF

TOOL_TYPE;

Page 39: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

39

Oracle 8Oracle 8

• Varying arrays

CREATE TYPE TOOL_TYPE AS OBJECT

(ToolName VARCHAR2(30) );

CREATE TYPE TOOLS_VA AS VARRAY(5) OF

TOOL_TYPE;

CREATE TABLE MECHANIC

(Name VARCHAR2(30) PRIMARY KEY,

Tools TOOLS_VA );

• Varying arrays

CREATE TYPE TOOL_TYPE AS OBJECT

(ToolName VARCHAR2(30) );

CREATE TYPE TOOLS_VA AS VARRAY(5) OF

TOOL_TYPE;

CREATE TABLE MECHANIC

(Name VARCHAR2(30) PRIMARY KEY,

Tools TOOLS_VA );

Page 40: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

40

Oracle 8Oracle 8

• Varying arrays

INSERT INTO MECHANIC VALUES

(‘Mike Jones’, TOOLS_VA(TOOL_TYPE(‘HAMMER’), TOOL_TYPE(‘SLEDGE’), TOOL_TYPE(‘AX’)));

• Varying arrays

INSERT INTO MECHANIC VALUES

(‘Mike Jones’, TOOLS_VA(TOOL_TYPE(‘HAMMER’), TOOL_TYPE(‘SLEDGE’), TOOL_TYPE(‘AX’)));

Page 41: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

41

Oracle 8Oracle 8

• Varying arrays

DECLARE

CURSOR MECHANIC_CURSOR IS

SELECT * FROM MECHANIC;

MECHANIC_REC MECHANIC_CURSOR%ROWTYPE;

BEGIN

FOR MECHANIC_REC IN MECHANIC_CURSOR

LOOP

DBMS_OUTPUT.PUT_LINE(MECHANIC_REC.Name);

FOR I IN 1..MECHANIC_REC.Tools.Count

LOOP

DBMS_OUTPUT.PUT_LINE(MECHANIC_REC.Tools(I));

END LOOP;

END LOOP;

END;

• Varying arrays

DECLARE

CURSOR MECHANIC_CURSOR IS

SELECT * FROM MECHANIC;

MECHANIC_REC MECHANIC_CURSOR%ROWTYPE;

BEGIN

FOR MECHANIC_REC IN MECHANIC_CURSOR

LOOP

DBMS_OUTPUT.PUT_LINE(MECHANIC_REC.Name);

FOR I IN 1..MECHANIC_REC.Tools.Count

LOOP

DBMS_OUTPUT.PUT_LINE(MECHANIC_REC.Tools(I));

END LOOP;

END LOOP;

END;

Page 42: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

42

Oracle 8Oracle 8

• Nested tables• Nested tables

Page 43: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

43

Oracle 8Oracle 8

• Nested tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

• Nested tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

Page 44: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

44

Oracle 8Oracle 8

• Nested tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

CREATE TYPE ANIMAL_TABLE AS TABLE OF

ANIMAL_TYPE;

• Nested tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

CREATE TYPE ANIMAL_TABLE AS TABLE OF

ANIMAL_TYPE;

Page 45: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

45

Oracle 8Oracle 8

• Nested tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

CREATE TYPE ANIMAL_TABLE AS TABLE OF

ANIMAL_TYPE;

CREATE TABLE BREEDER

(BreederNameVARCHAR2(30),

Animals ANIMAL_TABLE)

NESTED TABLE ANIMALS STORE AS ANIMALS_NT;

• Nested tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

CREATE TYPE ANIMAL_TABLE AS TABLE OF

ANIMAL_TYPE;

CREATE TABLE BREEDER

(BreederNameVARCHAR2(30),

Animals ANIMAL_TABLE)

NESTED TABLE ANIMALS STORE AS ANIMALS_NT;

Page 46: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

46

Oracle 8Oracle 8

• Nested tables

INSERT INTO BREEDER VALUES

(‘Mike Jones’,

ANIMAL_TABLE(

ANIMAL_TYPE( ‘DOG’, ‘BUTCH’, ‘31-MAR-97’),

ANIMAL_TYPE( ‘CAT’, ‘ROVER’, ‘1-MAR-98’),

ANIMAL_TYPE( ‘RAT’, ‘JULIO’, 12-MAR-79’) ) );

• Nested tables

INSERT INTO BREEDER VALUES

(‘Mike Jones’,

ANIMAL_TABLE(

ANIMAL_TYPE( ‘DOG’, ‘BUTCH’, ‘31-MAR-97’),

ANIMAL_TYPE( ‘CAT’, ‘ROVER’, ‘1-MAR-98’),

ANIMAL_TYPE( ‘RAT’, ‘JULIO’, 12-MAR-79’) ) );

Page 47: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

47

Oracle 8Oracle 8

• Nested tables

SELECT NT.BirthDate

FROM THE( SELECT Animals

FROM BREEDER

WHERE BreederName = ‘Jane James’;

) NT

WHERE NT.name = ‘Julio’;

• Nested tables

SELECT NT.BirthDate

FROM THE( SELECT Animals

FROM BREEDER

WHERE BreederName = ‘Jane James’;

) NT

WHERE NT.name = ‘Julio’;

Page 48: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

48

Oracle 8Oracle 8

• Nested tables

INSERT INTO

THE( SELECT Animals

FROM BREEDER

WHERE BreederName =‘Mike Jones’)

VALUES

(ANIMAL_TYPE( ‘DOG, ‘MARCUS’, ‘01-AUG-97’) );

• Nested tables

INSERT INTO

THE( SELECT Animals

FROM BREEDER

WHERE BreederName =‘Mike Jones’)

VALUES

(ANIMAL_TYPE( ‘DOG, ‘MARCUS’, ‘01-AUG-97’) );

Page 49: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

49

Oracle 8Oracle 8

• Nested tables

INSERT INTO BREEDER VALUES

(‘Joan Thomas’,

cast(multiset(

SELECT *

FROM THE( SELECTAnimals

FROMBREEDER

WHEREBreederName = ‘Jane James’))

AS ANIMAL_TABLE ) );

• Nested tables

INSERT INTO BREEDER VALUES

(‘Joan Thomas’,

cast(multiset(

SELECT *

FROM THE( SELECTAnimals

FROMBREEDER

WHEREBreederName = ‘Jane James’))

AS ANIMAL_TABLE ) );

Page 50: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

50

Oracle 8Oracle 8

• Object tables• Object tables

Page 51: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

51

Oracle 8Oracle 8

• Object tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

CREATE TABLE ANIMAL OF ANIMAL_TYPE;

• Object tables

CREATE TYPE ANIMAL_TYPE AS OBJECT

(Breed VARCHAR2(30),

Name VARCHAR2(20),

Birthdate DATE );

CREATE TABLE ANIMAL OF ANIMAL_TYPE;

Page 52: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

52

Oracle 8Oracle 8

• REF operator• REF operator

Page 53: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

53

Oracle 8Oracle 8

• REF operator

SELECT REF(A)

FROM ANIMAL A

WHERE Name = ‘Francis’;

• REF operator

SELECT REF(A)

FROM ANIMAL A

WHERE Name = ‘Francis’;

Page 54: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

54

Oracle 8Oracle 8

• DEREF operator• DEREF operator

Page 55: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

55

Oracle 8Oracle 8

• DEREF operator

CREATE TABLE ANIMAL OF ANIMAL_TYPE;

CREATE TABLE KEEPER

(KeeperName VARCHAR2(30),

AnimalKept REF ANIMAL_TYPE )

• DEREF operator

CREATE TABLE ANIMAL OF ANIMAL_TYPE;

CREATE TABLE KEEPER

(KeeperName VARCHAR2(30),

AnimalKept REF ANIMAL_TYPE )

Page 56: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

56

Oracle 8Oracle 8

• DEREF operator

CREATE TABLE ANIMAL OF ANIMAL_TYPE;

CREATE TABLE KEEPER

(KeeperName VARCHAR2(30),

AnimalKept REF ANIMAL_TYPE )

INSERT INTO KEEPER

SELECT ‘Kate’, REF(A)

FROM ANIMAL A

WHERE Name = ‘Benji’;

• DEREF operator

CREATE TABLE ANIMAL OF ANIMAL_TYPE;

CREATE TABLE KEEPER

(KeeperName VARCHAR2(30),

AnimalKept REF ANIMAL_TYPE )

INSERT INTO KEEPER

SELECT ‘Kate’, REF(A)

FROM ANIMAL A

WHERE Name = ‘Benji’;

Page 57: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

57

Oracle 8Oracle 8

• DEREF operator

SELECT DEREF(K.AnimalKept)

FROM KEEPER K

WHERE KeeperName = ‘Kate’;

• DEREF operator

SELECT DEREF(K.AnimalKept)

FROM KEEPER K

WHERE KeeperName = ‘Kate’;

Page 58: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

58

Oracle 8Oracle 8

• VALUE operator• VALUE operator

Page 59: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

59

Oracle 8Oracle 8

• VALUE operator

SELECT VALUE(A)

FROM ANIMAL A

WHERE NAME = ‘Benji’;

• VALUE operator

SELECT VALUE(A)

FROM ANIMAL A

WHERE NAME = ‘Benji’;

Page 60: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

60

Oracle 8Oracle 8

• Generation of OIDs

CREATE TYPE CUSTOMER_TYPE AS OBJECT

(Customer_ID NUMBER PRIMARY KEY,

Name VARCHAR(30),

Street VARCHAR2(20),

City VARCHAR2(20),

State CHAR(3)

Zip NUMBER(4) );

CREATE VIEW CUSTOMER_OBJ OF CUSTOMER_TYPE

WITH OBJECT OID(Customer_ID) AS

SELECT * FROM Customer;

• Generation of OIDs

CREATE TYPE CUSTOMER_TYPE AS OBJECT

(Customer_ID NUMBER PRIMARY KEY,

Name VARCHAR(30),

Street VARCHAR2(20),

City VARCHAR2(20),

State CHAR(3)

Zip NUMBER(4) );

CREATE VIEW CUSTOMER_OBJ OF CUSTOMER_TYPE

WITH OBJECT OID(Customer_ID) AS

SELECT * FROM Customer;

Page 61: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

61

Oracle 8Oracle 8

• Generation of OIDs

CREATE VIEW CUSTOMER_CALL_OBJ AS

SELECT MAKE_REF(CUSTOMER_OBJECT,

Customer ID)

Customer_ID, CallNumber, CallDate

FROM Customer_Call;

• Generation of OIDs

CREATE VIEW CUSTOMER_CALL_OBJ AS

SELECT MAKE_REF(CUSTOMER_OBJECT,

Customer ID)

Customer_ID, CallNumber, CallDate

FROM Customer_Call;

Page 62: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

62

Oracle 8Oracle 8

• Generation of OIDs

SELECT DEREF(CCOV.Customer_ID)

FROM CUSTOMER_CALL_OBJECT

WHERE CallDate = TRUNC(SysDate);

• Generation of OIDs

SELECT DEREF(CCOV.Customer_ID)

FROM CUSTOMER_CALL_OBJECT

WHERE CallDate = TRUNC(SysDate);

Page 63: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

63

Oracle 8Oracle 8

• Large Objects• Large Objects

Page 64: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

64

Oracle 8Oracle 8

• Large Objects

BLOBBinary LOB. It contains binary data up to 4GB in length and it is stored in the database

• Large Objects

BLOBBinary LOB. It contains binary data up to 4GB in length and it is stored in the database

Page 65: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

65

Oracle 8Oracle 8

• Large Objects

BLOBBinary LOB. It contains binary data up to 4GB in length and it is stored in the database

CLOBCharacter LOB. It contains character data up to 4GB in length and it is stored in the database

• Large Objects

BLOBBinary LOB. It contains binary data up to 4GB in length and it is stored in the database

CLOBCharacter LOB. It contains character data up to 4GB in length and it is stored in the database

Page 66: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

66

Oracle 8Oracle 8

• Large Objects

BLOBBinary LOB. It contains binary data up to 4GB in length and it is stored in the database

CLOBCharacter LOB. It contains character data up to 4GB in length and it is stored in the database

BFILEBinary file. It contains read-only binary data stored outside the database and its length is limited by operating system

• Large Objects

BLOBBinary LOB. It contains binary data up to 4GB in length and it is stored in the database

CLOBCharacter LOB. It contains character data up to 4GB in length and it is stored in the database

BFILEBinary file. It contains read-only binary data stored outside the database and its length is limited by operating system

Page 67: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

67

Oracle 8Oracle 8

• Large Objects

CREATE TABLE Proposal

(Proposal_ID NUMBER(10) PRIMARY KEY,

Name VARCHAR2(30),

ShortDescription VARCHAR2(1000),

ProposalText CLOB,

Budget BLOB,

CoverLetter BFILE );

• Large Objects

CREATE TABLE Proposal

(Proposal_ID NUMBER(10) PRIMARY KEY,

Name VARCHAR2(30),

ShortDescription VARCHAR2(1000),

ProposalText CLOB,

Budget BLOB,

CoverLetter BFILE );

Page 68: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

68

Oracle 8Oracle 8

• Large Objects

INSERT INTO Proposal VALUES

( 123,

‘Nuclear reactor’,

‘This is a short decription’,

‘This is a text of full proposal’,

EMPTY_BLOB(),

NULL);

• Large Objects

INSERT INTO Proposal VALUES

( 123,

‘Nuclear reactor’,

‘This is a short decription’,

‘This is a text of full proposal’,

EMPTY_BLOB(),

NULL);

Page 69: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

69

Oracle 8Oracle 8

• DBMS_LOB package

READRead a pice of a LOB value

SUBSTRSelect a piece of a LOB value

INSTRInsert a piece of a LOB value

GETLENGHTFind the length of a LOB value

• DBMS_LOB package

READRead a pice of a LOB value

SUBSTRSelect a piece of a LOB value

INSTRInsert a piece of a LOB value

GETLENGHTFind the length of a LOB value

Page 70: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

70

Oracle 8Oracle 8

• DBMS_LOB package

COMPARECompare two LOB values

WRITEWrite a piece of a LOB value

APPENDAppend a piece of a LOB value

ERASEErase a piece of a LOB value

• DBMS_LOB package

COMPARECompare two LOB values

WRITEWrite a piece of a LOB value

APPENDAppend a piece of a LOB value

ERASEErase a piece of a LOB value

Page 71: 1 Oracle 8. 2 New features 3 Oracle 8 New features  Abstract data types New features  Abstract data types

71

Oracle 8Oracle 8

• References

/share/cs-pub/235/docs/SQLRef.pdf

/share/cs-pub/235/docs/PLSQLRef.pdf

• References

/share/cs-pub/235/docs/SQLRef.pdf

/share/cs-pub/235/docs/PLSQLRef.pdf