Higgins S., Kotsovolos S., Raphaely D.
Table of contents :
Send Us Your Comments……Page 21
Preface……Page 23
Structure……Page 24
Related Documents……Page 27
Conventions……Page 29
Documentation Accessibility……Page 32
LOB Features Introduced with Oracle9i, Release 1 (9.0.1)……Page 33
LOB Features Introduced with Oracle8i, Release 8.1.5……Page 36
1 Introduction to LOBs……Page 37
Unstructured Data in System Files Need Accessing from the Database……Page 38
Oracle Text (interMedia Text) Indexing Supports Searching Content in XML Elements……Page 39
Why Not Use LONGs?……Page 40
SQL Semantics Support for LOBs……Page 41
Extensible Indexing on LOBs……Page 42
Extensible Optimizer……Page 43
LOB “Demo” Directory……Page 44
Compatibility and Migration Issues……Page 45
Examples in This Manual Use the Multimedia Schema……Page 46
2 Basic LOB Components……Page 47
External LOBs (BFILEs)……Page 48
Reference Semantics……Page 49
CLOB, NCLOB Values are Stored Using 2 Byte Unicode for Varying-Width Character Sets……Page 50
Converting Between Client Character Set and UCS-2……Page 51
Internal LOBs……Page 52
External LOBs……Page 53
SELECTing a LOB……Page 54
Setting an Internal LOB to NULL……Page 55
Initializing LOBs Example Using Table Multimedia_tab……Page 56
Initializing External LOBs to NULL or a File Name……Page 57
3 LOB Support in Different Programmatic Environments……Page 59
Eight Programmatic Environments Operate on LOBs……Page 60
Comparing the LOB Interfaces……Page 61
Pro*COBOL Statements that Operate on BLOBs, CLOBs, NCLOBs, and BFILEs……Page 65
Pro*COBOL Embedded SQL Statements For LOB Locators……Page 67
Pro*COBOL Embedded SQL Statements To Open and Close Internal LOBs and BFILEs……Page 68
OLEDB (Oracle Provider for OLEDB — OraOLEDB)……Page 69
4 Managing LOBs……Page 71
Using SQL DML for Basic Operations on LOBs……Page 72
Oracle8 Release 8.0.4.3……Page 73
Managing Temporary LOBs……Page 74
Inline versus Out-of-Line LOBs……Page 75
SQL Loader Performance: Loading Into Internal LOBs……Page 76
Data File (sample.dat)……Page 77
Control File……Page 78
Loading Out-Of-Line LOB Data……Page 79
Secondary Data File (SecondStory.txt)……Page 80
Loading Out-of-Line LOB Data in Delimited Fields……Page 81
Control File……Page 82
SQL Loader LOB Loading Tips……Page 83
LOB Restrictions……Page 84
Removed Restrictions……Page 87
5 Large Objects: Advanced Topics……Page 89
A Selected Locator Becomes a Read Consistent Locator……Page 90
Read Consistent Locators Provide Same LOB Value Regardless of When the SELECT Occurs……Page 91
Example……Page 92
Example of Updating a LOB Using SQL DML and DBMS_LOB……Page 94
Example……Page 95
Example of Using One Locator to Update the Same LOB Value……Page 96
Example……Page 97
Example of Updating a LOB with a PL/SQL (DBMS_LOB) Bind Variable……Page 98
Example……Page 99
LOB Locators Cannot Span Transactions……Page 101
Example of Locator Not Spanning a Transaction……Page 102
Transaction IDs: Reading and Writing to a LOB Using Locators……Page 103
Case 2:……Page 104
Case 4:……Page 105
LOBs in the Object Cache……Page 106
Guidelines for Using LOB Buffering……Page 107
LOB Buffer Physical Structure……Page 109
Example of Using the LOB Buffering System (LBS)……Page 110
Flushing the LOB Buffer……Page 111
Flushing the Updated LOB……Page 112
Saving Locator State to Avoid a Reselect……Page 113
OCI Example of LOB Buffering……Page 114
Creating a Varray Containing LOB References: Example……Page 117
Example of LOB Columns in Partitioned Index-Organized Tables……Page 118
Non-Supported Column Types……Page 119
Hash Partitioned Index-Organized Table LOB Restrictions……Page 120
6 Frequently Asked Questions about LOBs……Page 121
Answer……Page 124
Question……Page 125
Answer……Page 126
Answer……Page 127
Answer……Page 128
Answer……Page 129
Answer……Page 130
Answer……Page 131
Question……Page 132
Answer……Page 133
Answer……Page 134
Answer……Page 135
Answer……Page 138
Question……Page 139
Answer……Page 140
Question……Page 141
Answer……Page 142
Question……Page 143
Answer……Page 144
Answer……Page 145
Question 1……Page 146
Answer 2……Page 147
Answer……Page 148
Answer……Page 149
Question……Page 150
Answer……Page 151
Answer……Page 152
7 Modeling and Design……Page 153
LOBs Compared to LONG and LONG RAW Types……Page 154
Selecting a Table Architecture……Page 155
EMPTY_CLOB() or EMPTY_BLOB() Column Storage: LOB Locator is Stored……Page 156
Defining Tablespace and Storage Example1……Page 157
TABLESPACE and LOB Index……Page 158
PCTVERSION……Page 159
CACHE / NOCACHE / CACHE READS……Page 160
LOBs Will Always Generate Undo for LOB Index Pages……Page 161
Set INITIAL and NEXT to Larger than CHUNK……Page 162
Guidelines for ENABLE or DISABLE STORAGE IN ROW……Page 163
Example 1: Creating a Tablespace and Table to Store Gigabyte LOBs……Page 164
How this Affects the Temporary LOB COPY or APPEND?……Page 165
Binds Greater than 4,000 Bytes are Now Allowed For LOB INSERTs and UPDATEs……Page 166
Binds of More Than 4,000 Bytes … No HEX to RAW or RAW to HEX Conversion……Page 167
Example: PL/SQL – Using Binds of More Than 4,000 Bytes in INSERT and UPDATE……Page 168
Example: PL/SQL – 4,000 Byte Result Limit in Binds of More than 4,000 Bytes When Data Includes SQ………Page 170
Example: C (OCI) – Binds of More than 4,000 Bytes For INSERT and UPDATE……Page 171
Close All Opened LOBs Before Committing the Transaction……Page 174
Example 1: Correct Use of OPEN/CLOSE Calls to LOBs in a Transaction……Page 175
LOBs in Index Organized Tables (IOT)……Page 176
Example of Index Organized Table (IOT) with LOB Columns……Page 177
Manipulating LOBs in Partitioned Tables……Page 178
Creating and Partitioning a Table Containing LOB Data……Page 180
Creating an Index on a Table Containing LOB Columns……Page 182
Splitting Partitions Containing LOBs……Page 183
Functional Indexes on LOB Columns……Page 184
Improved LOB Usability: You can Now Access LOBs Using SQL “Character” Functions……Page 185
PL/SQL Relational Operators Now Allowed for LOBs……Page 186
Using SQL Functions and Operators for VARCHAR2s on CLOBs……Page 187
UNICODE Support for VARCHAR2 and CLOB……Page 191
Defining CHAR Buffer on CLOB……Page 192
Returning VARCHAR2s……Page 193
Returned LOB is a Temporary LOB Locator……Page 194
IS [NOT] NULL in VARCHAR2s and CLOBs……Page 195
SQL DML Changes For LOBs……Page 196
PL/SQL Statements and Variables: New Semantics Changes……Page 197
PL/SQL Example 1: Prior Release SQL Interface for a CLOB/VARCHAR2 Application……Page 198
PL/SQL Example 3: Defining a CLOB Variable on a VARCHAR2……Page 199
VARCHAR2 and CLOB in PL/SQL Built-in Functions……Page 200
PL/SQL Example 5: Change in Locator-Data Linkage……Page 201
PL/SQL Example 6: Freeing Temporary LOBs Automatically and Manually……Page 202
Varying-Width Character Sets: VARCHAR2s and CLOBs……Page 203
Inserting More than 4K Bytes Data Into LOB Columns……Page 204
Performance Measurement……Page 205
User-Defined Aggregates and LOBs……Page 206
UDAGs: DML and Query Support……Page 207
8 Migrating From LONGs to LOBs……Page 209
Using the LONG-to-LOB API Results in an Easy Migration……Page 210
Binds in OCI……Page 211
OCI Functions Allow Piecewise and Array INSERT, UPDATE, or Fetch on LOBs……Page 212
Assignment and Parameters Passing (PL/SQL)……Page 213
Migrating LONGs to LOBs: Using ALTER TABLE to Change LONG Column to LOB Types……Page 214
All Constraints of LONG Column are Maintained……Page 216
Rebuilding Indexes After a LONG to LOB Migration……Page 217
Replication……Page 218
Triggers……Page 219
NULL LOBs Versus Zero Length LOBs……Page 220
Guidelines for Using LONG-to-LOB API for LOBs with OCI……Page 221
Using Piecewise INSERTs and UPDATEs with Polling……Page 222
Simple Fetch in One Piece……Page 223
Piecewise with Callback……Page 224
UPDATEs……Page 225
Variable Assignment Between CLOB/CHAR and BLOB/RAW……Page 226
VARCHAR2 and CLOB in PL/SQL Built-In Functions……Page 227
PL/SQL and C Binds from OCI……Page 228
From SQL……Page 229
From PL/SQL……Page 230
Overloading with Anchored Types……Page 231
Using utldtree.sql to Determine Where Your Application Needs Change……Page 232
To Convert LONG to CLOB, Use ALTER TABLE……Page 233
Converting LONG to LOB Example 1: More than 4K Binds and Simple INSERTs……Page 234
Converting LONG to LOB Example 2: Piecewise INSERT with Polling……Page 235
Converting LONG to LOB Example 3: Piecewise INSERT with Callback……Page 236
Converting LONG to LOB Example 4: Array insert……Page 238
Converting LONG to LOB Example 6: Piecewise Fetch with Polling……Page 240
Converting LONG to LOB Example 7: Piecewise Fetch with Callback……Page 241
Converting LONG to LOB Example 8: Array Fetch……Page 243
Converting LONG to LOB Example 9: Using PL/SQL in INSERT, UPDATE and SELECT……Page 244
Converting LONG to LOB Example 10: Assignments and Parameter Passing in PL/SQL……Page 245
Converting LONG to LOB Example 12: Using PL/SQL Binds from OCI on LOBs……Page 246
Calling PL/SQL Outbinds in the “call foo(:1);” Manner……Page 247
Converting LONG to LOB Example 13: Calling PL/SQL and C Procedures from PL/SQL……Page 248
PL/SQL Interface……Page 249
Compatibility and Migration……Page 250
Answer……Page 251
Answer……Page 252
Answer……Page 253
9 LOBS: Best Practices……Page 255
Loading XML Documents Into LOBs With SQL*Loader……Page 256
LOB Performance Guidelines……Page 259
Temporary LOB Performance Guidelines……Page 260
The Correct Procedure……Page 263
Preventing Generation of Redo Space During Migration……Page 264
10 Internal Persistent LOBs……Page 265
Use Case Model: Internal Persistent LOBs Operations……Page 266
Creating Tables Containing LOBs……Page 271
Creating a Table Containing One or More LOB Columns……Page 273
SQL: Create a Table Containing One or More LOB Columns……Page 275
Creating a Table Containing an Object Type with a LOB Attribute……Page 278
SQL: Creating a Table Containing an Object Type with a LOB Attribute……Page 280
Creating a Nested Table Containing a LOB……Page 283
SQL: Creating a Nested Table Containing a LOB……Page 285
Inserting One or More LOB Values into a Row……Page 286
Inserting a LOB Value using EMPTY_CLOB() or EMPTY_BLOB()……Page 288
SQL: Inserting a Value Using EMPTY_CLOB() / EMPTY_BLOB()……Page 290
Inserting a Row by Selecting a LOB From Another Table……Page 291
SQL: Inserting a Row by Selecting a LOB from Another Table……Page 292
Inserting a Row by Initializing a LOB Locator Bind Variable……Page 293
COBOL (Pro*COBOL): Inserting a Row by Initializing a LOB Locator Bind Variable……Page 294
Loading Initial Data into a BLOB, CLOB, or NCLOB……Page 296
Loading a LOB with BFILE Data……Page 298
COBOL (Pro*COBOL): Loading a LOB with Data from a BFILE……Page 300
Open: Checking If a LOB Is Open……Page 302
COBOL (Pro*COBOL): Checking if a LOB is Open……Page 303
LONGs to LOBs……Page 305
LONG to LOB Migration Using the LONG-to-LOB API……Page 306
To Convert LONG to CLOB, Use ALTER TABLE……Page 307
LONG to LOB Copying, Using the TO_LOB Operator……Page 308
SQL: Copying LONGs to LOBs Using TO_LOB Operator……Page 309
Checking Out a LOB……Page 312
COBOL (Pro*COBOL): Checking Out a LOB……Page 313
Checking In a LOB……Page 316
COBOL (Pro*COBOL): Checking in a LOB……Page 317
Displaying LOB Data……Page 321
COBOL (Pro*COBOL): Displaying LOB Data……Page 322
Reading Data from a LOB……Page 325
COBOL (Pro*COBOL): Reading Data from a LOB……Page 327
Reading a Portion of the LOB (substr)……Page 329
COBOL (Pro*COBOL): Reading a Portion of the LOB (substr)……Page 330
C/C++ (Pro*C/C++): Reading a Portion of the LOB (substr)……Page 332
Comparing All or Part of Two LOBs……Page 334
COBOL (Pro*COBOL): Comparing All or Part of Two LOBs……Page 335
Patterns: Checking for Patterns in the LOB (instr)……Page 338
COBOL (Pro*COBOL): Checking for Patterns in the LOB (instr)……Page 339
Length: Determining the Length of a LOB……Page 342
COBOL (Pro*COBOL): Determining the Length of a LOB……Page 343
Copying All or Part of One LOB to Another LOB……Page 345
COBOL (Pro*COBOL): Copying All or Part of One LOB to Another LOB……Page 346
Copying a LOB Locator……Page 349
COBOL (Pro*COBOL): Copying a LOB Locator……Page 350
Equality: Checking If One LOB Locator Is Equal to Another……Page 352
Initialized Locator: Checking If a LOB Locator Is Initialized……Page 354
Character Set ID: Determining Character Set ID……Page 356
Character Set Form: Determining Character Set Form……Page 358
Appending One LOB to Another……Page 360
COBOL (Pro*COBOL): Appending One LOB to Another……Page 361
Append-Writing to the End of a LOB……Page 364
COBOL (Pro*COBOL): Writing to the End of (Appending to) a LOB……Page 366
Writing Data to a LOB……Page 368
COBOL (Pro*COBOL): Writing Data to a LOB……Page 371
Trimming LOB Data……Page 374
COBOL (Pro*COBOL): Trimming LOB Data……Page 375
Erasing Part of a LOB……Page 378
COBOL (Pro*COBOL): Erasing Part of a LOB……Page 379
Enabling LOB Buffering……Page 382
COBOL (Pro*COBOL): Enabling LOB Buffering……Page 384
:Flushing the Buffer……Page 386
COBOL (Pro*COBOL): Flushing the Buffer……Page 388
Disabling LOB Buffering……Page 390
COBOL (Pro*COBOL): Disabling LOB Buffering……Page 392
Three Ways to Update a LOB or Entire LOB Data……Page 394
Updating a LOB with EMPTY_CLOB() or EMPTY_BLOB()……Page 395
For Binds of More Than 4,000 Bytes……Page 396
SQL: UPDATE a LOB with EMPTY_CLOB() or EMPTY_BLOB()……Page 397
Updating a Row by Selecting a LOB From Another Table……Page 398
SQL: Update a Row by Selecting a LOB From Another Table……Page 399
Updating by Initializing a LOB Locator Bind Variable……Page 400
COBOL (Pro*COBOL): Updating by Initializing a LOB Locator Bind Variable……Page 401
Deleting the Row of a Table Containing a LOB……Page 404
SQL: Delete a LOB……Page 405
11 Temporary LOBs……Page 407
Use Case Model: Internal Temporary LOBs……Page 408
Temporary LOB Locators Can be IN Values……Page 412
Temporary LOB Data is Stored in Temporary Tablespace……Page 413
Temporary Tablespace……Page 414
Locators and Semantics……Page 415
Features Specific to Temporary LOBs……Page 416
Security Issues with Temporary LOBs……Page 417
Managing Temporary LOBs……Page 418
Creating a Temporary LOB……Page 419
COBOL (Pro*COBOL): Creating a Temporary LOB……Page 420
Checking If a LOB is Temporary……Page 423
COBOL (Pro*COBOL): Checking If a LOB is Temporary……Page 424
Freeing a Temporary LOB……Page 426
COBOL (Pro*COBOL): Freeing a Temporary LOB……Page 427
Loading a Temporary LOB with Data from a BFILE……Page 429
COBOL (Pro*COBOL): Loading a Temporary LOB with Data from a BFILE……Page 430
Determining If a Temporary LOB Is Open……Page 433
COBOL (Pro*COBOL): Determining if a Temporary LOB is Open……Page 434
Displaying Temporary LOB Data……Page 436
COBOL (Pro*COBOL): Displaying Temporary LOB Data……Page 437
Reading Data from a Temporary LOB……Page 440
COBOL (Pro*COBOL): Reading Data from a Temporary LOB……Page 442
Reading Portion of Temporary LOB (Substr)……Page 445
COBOL (Pro*COBOL): Reading a Portion of Temporary LOB (substr)……Page 446
Comparing All or Part of Two (Temporary) LOBs……Page 449
COBOL (Pro*COBOL): Comparing All or Part of Two (Temporary) LOBs……Page 450
Determining If a Pattern Exists in a Temporary LOB (instr)……Page 453
COBOL (Pro*COBOL): Determining If a Pattern Exists in a Temporary LOB (instr)……Page 454
Finding the Length of a Temporary LOB……Page 457
COBOL (Pro*COBOL): Finding the Length of a Temporary LOB……Page 458
Copying All or Part of One (Temporary) LOB to Another……Page 461
COBOL (Pro*COBOL): Copying All or Part of One (Temporary) LOB to Another……Page 462
Copying a LOB Locator for a Temporary LOB……Page 465
COBOL (Pro*COBOL): Copying a LOB Locator for a Temporary LOB……Page 466
Is One Temporary LOB Locator Equal to Another……Page 469
Determining if a LOB Locator for a Temporary LOB Is Initialized……Page 471
Finding Character Set ID of a Temporary LOB……Page 473
Finding Character Set Form of a Temporary LOB……Page 475
Appending One (Temporary) LOB to Another……Page 477
COBOL (Pro*COBOL): Appending One (Temporary) LOB to Another……Page 478
Write-Appending to a Temporary LOB……Page 481
COBOL (Pro*COBOL): Write-Appending to a Temporary LOB……Page 482
Writing Data to a Temporary LOB……Page 485
COBOL (Pro*COBOL): Writing Data to a Temporary LOB……Page 487
Trimming Temporary LOB Data……Page 489
COBOL (Pro*COBOL): Trimming Temporary LOB Data……Page 490
Erasing Part of a Temporary LOB……Page 493
COBOL (Pro*COBOL): Erasing Part of a Temporary LOB……Page 494
Enabling LOB Buffering for a Temporary LOB……Page 497
COBOL (Pro*COBOL): Enabling LOB Buffering for a Temporary LOB……Page 498
Flushing Buffer for a Temporary LOB……Page 501
COBOL (Pro*COBOL): Flushing Buffer for a Temporary LOB……Page 502
Disabling LOB Buffering for a Temporary LOB……Page 504
COBOL (Pro*COBOL): Disabling LOB Buffering for a Temporary LOB……Page 505
12 External LOBs (BFILEs)……Page 509
Use Case Model: External LOBs (BFILEs)……Page 510
Initializing a BFILE Locator……Page 513
Examples……Page 514
BFILENAME() and Initialization……Page 515
Ownership and Privileges……Page 516
SQL DDL for BFILE Security……Page 517
Guidelines for DIRECTORY Usage……Page 518
BFILEs in Shared Server (Multi-Threaded Server — MTS) Mode……Page 519
Guidelines……Page 520
General Rule……Page 521
Three Ways to Create a Table Containing a BFILE……Page 522
Creating a Table Containing One or More BFILE Columns……Page 523
SQL: Creating a Table Containing One or More BFILE Columns……Page 524
Creating a Table of an Object Type with a BFILE Attribute……Page 526
SQL: Creating a Table of an Object Type with a BFILE Attribute……Page 527
Creating a Table with a Nested Table Containing a BFILE……Page 529
SQL: Creating a Table with a Nested Table Containing a BFILE……Page 530
Three Ways to Insert a Row Containing a BFILE……Page 531
INSERT a Row Using BFILENAME()……Page 532
Ways BFILENAME() is Used to Initialize BFILE Column or Locator Variable……Page 533
SQL: Inserting a Row by means of BFILENAME()……Page 534
COBOL (Pro*COBOL): Inserting a Row by means of BFILENAME()……Page 535
INSERT a BFILE Row by Selecting a BFILE From Another Table……Page 537
SQL: Inserting a Row Containing a BFILE by Selecting a BFILE From Another Table……Page 538
Inserting a Row With BFILE by Initializing a BFILE Locator……Page 539
COBOL (Pro*COBOL): Inserting a Row Containing a BFILE by Initializing a BFILE Locator……Page 540
Loading Data Into External LOB (BFILE)……Page 543
Data file (sample9.dat)……Page 545
Data file (sample10.dat)……Page 546
Loading a LOB with BFILE Data……Page 547
Specify Amount Parameter to be Less than the Size of the BFILE!……Page 548
COBOL (Pro*COBOL): Loading a LOB with BFILE Data……Page 549
Two Ways to Open a BFILE……Page 552
Close Files After Use!……Page 553
Opening a BFILE with FILEOPEN……Page 554
Opening a BFILE with OPEN……Page 556
COBOL (Pro*COBOL): Opening a BFILE with OPEN……Page 557
Specify the Maximum Number of Open BFILEs: SESSION_MAX_OPEN_FILES……Page 560
Checking If the BFILE is Open with FILEISOPEN……Page 562
Checking If a BFILE is Open Using ISOPEN……Page 564
COBOL (Pro*COBOL): Checking If the BFILE is Open with ISOPEN……Page 565
Displaying BFILE Data……Page 567
COBOL (Pro*COBOL): Displaying BFILE Data……Page 568
Reading Data from a BFILE……Page 571
The Amount Parameter……Page 572
COBOL (Pro*COBOL): Reading Data from a BFILE……Page 573
Reading a Portion of BFILE Data (substr)……Page 575
COBOL (Pro*COBOL): Reading a Portion of BFILE Data (substr)……Page 576
Comparing All or Parts of Two BFILES……Page 578
COBOL (Pro*COBOL): Comparing All or Parts of Two BFILES……Page 579
Checking If a Pattern Exists (instr) in the BFILE……Page 582
COBOL (Pro*COBOL): Checking If a Pattern Exists (instr) in the BFILE……Page 583
Checking If the BFILE Exists……Page 586
COBOL (Pro*COBOL): Checking If the BFILE Exists……Page 587
Getting the Length of a BFILE……Page 589
COBOL (Pro*COBOL): Getting the Length of a BFILE……Page 590
Copying a LOB Locator for a BFILE……Page 592
COBOL (Pro*COBOL): Copying a LOB Locator for a BFILE……Page 593
Determining If a LOB Locator for a BFILE Is Initialized……Page 595
Determining If One LOB Locator for a BFILE Is Equal to Another……Page 597
Getting DIRECTORY Alias and Filename……Page 599
COBOL (Pro*COBOL): Getting Directory Alias and Filename……Page 600
Three Ways to Update a Row Containing a BFILE……Page 602
Updating a BFILE Using BFILENAME()……Page 603
SQL: Updating a BFILE by means of BFILENAME()……Page 605
Updating a BFILE by Selecting a BFILE From Another Table……Page 606
SQL: Updating a BFILE by Selecting a BFILE From Another Table……Page 607
Updating a BFILE by Initializing a BFILE Locator……Page 608
COBOL (Pro*COBOL): Updating a BFILE by Initializing a BFILE Locator……Page 609
Two Ways to Close a BFILE……Page 612
Closing a BFILE with FILECLOSE……Page 614
Closing a BFILE with CLOSE……Page 616
COBOL (Pro*COBOL): Closing a BFILE with CLOSE……Page 617
Closing All Open BFILEs with FILECLOSEALL……Page 619
COBOL (Pro*COBOL): Closing All Open BFiles……Page 620
Deleting the Row of a Table Containing a BFILE……Page 623
TRUNCATE……Page 624
13 Using OraOLEDB to Manipulate LOBs……Page 625
Rowset Object……Page 626
Writing Data to a LOB Column With AppendChunk()……Page 627
ADO and LOBs Example 1: Inserting LOB Data From a File……Page 628
14 LOBs Case Studies……Page 631
Building a Multimedia Repository……Page 632
How this Application Uses LOBs……Page 633
Populating the Repository……Page 634
Example 1: Inserting a Word document into a BLOB Column using PL/SQL……Page 635
How the Index Was Built on Table sam_emp, resume Column……Page 636
MyServletCtx.java……Page 637
Retrieving Data from the Repository……Page 639
MyServlet.java……Page 640
First Steps Solution……Page 642
Use Case Diagrams……Page 645
Hot Links in the Online Versions of this Document……Page 651
B The Multimedia Schema Used for Examples in This Manual……Page 653
A Typical Multimedia Application……Page 654
The Multimedia Schema……Page 655
Table Multimedia_Tab……Page 656
Script for Creating the Multimedia Schema……Page 658
Index……Page 663
Reviews
There are no reviews yet.