1 Oracle 8. 2 New features 3 Oracle 8 New features Abstract data types New features Abstract data...
-
Upload
lesley-mills -
Category
Documents
-
view
246 -
download
4
Transcript of 1 Oracle 8. 2 New features 3 Oracle 8 New features Abstract data types New features Abstract data...
1
Oracle 8Oracle 8
2
Oracle 8Oracle 8
• New features• New features
3
Oracle 8Oracle 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
5
Oracle 8Oracle 8
• New features
Abstract data types
Nested tables
Varying arrays
• New features
Abstract data types
Nested tables
Varying arrays
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
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
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
9
Oracle 8Oracle 8
• Abstract data types• 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) );
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 );
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 );
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) );
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)));
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) );
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;
17
Oracle 8Oracle 8
• Abstract data types
DROP TYPE statement
DROP TYPE PERSON_TYPE
• Abstract data types
DROP TYPE statement
DROP TYPE PERSON_TYPE
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) );
19
Oracle 8Oracle 8
• Indexing abstract data type attributes• Indexing abstract data type attributes
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) ;
21
Oracle 8Oracle 8
• Object views
• Object views
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) );
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) );
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 );
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’;
26
Oracle 8Oracle 8
• Object views
Create flat relational table
• Object views
Create flat relational table
27
Oracle 8Oracle 8
• Object views
Create flat relational table
Create abstract data types
• Object views
Create flat relational table
Create 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
29
Oracle 8Oracle 8
• Methods• Methods
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 );
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;
/
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;
33
Oracle 8Oracle 8
• Collectors• Collectors
34
Oracle 8Oracle 8
• Collectors
Varying arrays
• Collectors
Varying arrays
35
Oracle 8Oracle 8
• Collectors
Varying arrays
Nested tables
• Collectors
Varying arrays
Nested tables
36
Oracle 8Oracle 8
• Varying arrays• Varying arrays
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) );
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;
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 );
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’)));
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;
42
Oracle 8Oracle 8
• Nested tables• Nested tables
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 );
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;
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;
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’) ) );
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’;
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’) );
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 ) );
50
Oracle 8Oracle 8
• Object tables• Object tables
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;
52
Oracle 8Oracle 8
• REF operator• REF operator
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’;
54
Oracle 8Oracle 8
• DEREF operator• DEREF operator
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 )
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’;
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’;
58
Oracle 8Oracle 8
• VALUE operator• VALUE operator
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’;
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;
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;
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);
63
Oracle 8Oracle 8
• Large Objects• Large Objects
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
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
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
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 );
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);
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
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
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