Oracle PL SQL Programming Sixth Edition Steven Feuerstein
1. Visit https://ebookultra.com to download the full version and
explore more ebooks or textbooks
Oracle PL SQL Programming Sixth Edition Steven
Feuerstein
_____ Click the link below to download _____
https://ebookultra.com/download/oracle-pl-sql-programming-
sixth-edition-steven-feuerstein/
Explore and download more ebooks or textbooks at ebookultra.com
2. Here are some recommended products that we believe you will be
interested in. You can click the link to download.
Mastering Oracle SQL 2nd Edition Mishra
https://ebookultra.com/download/mastering-oracle-sql-2nd-edition-
mishra/
Mastering Oracle SQL 1st Edition Sanjay Mishra
https://ebookultra.com/download/mastering-oracle-sql-1st-edition-
sanjay-mishra/
Pro Oracle SQL Expert s Voice in Oracle 1st Edition Karen
Morton
https://ebookultra.com/download/pro-oracle-sql-expert-s-voice-in-
oracle-1st-edition-karen-morton/
Beginning Oracle SQL 3rd Edition Lex De Haan
https://ebookultra.com/download/beginning-oracle-sql-3rd-edition-lex-
de-haan/
3. Oracle SQL Loader the definitive guide 1st Edition
Jonathan Gennick
https://ebookultra.com/download/oracle-sql-loader-the-definitive-
guide-1st-edition-jonathan-gennick/
Oracle SQL tuning pocket reference 1st ed Edition Mark
Gurry
https://ebookultra.com/download/oracle-sql-tuning-pocket-
reference-1st-ed-edition-mark-gurry/
Oracle SQL Plus the definitive guide 2nd ed Edition
Jonathan Gennick
https://ebookultra.com/download/oracle-sql-plus-the-definitive-
guide-2nd-ed-edition-jonathan-gennick/
Professional SQL Server 2005 Programming Robert Vieira
https://ebookultra.com/download/professional-sql-
server-2005-programming-robert-vieira/
Programming Oracle Triggers and Stored Procedures 3rd
Edition Prentice Hall PTR Oracle Series Kevin Owens
https://ebookultra.com/download/programming-oracle-triggers-and-
stored-procedures-3rd-edition-prentice-hall-ptr-oracle-series-kevin-
owens/
5. Oracle PL SQL Programming Sixth Edition Steven
Feuerstein Digital Instant Download
Author(s): Steven Feuerstein, Bill Pribyl
ISBN(s): 9781449324452, 1449324452
Edition: Sixth Edition
File Details: PDF, 15.55 MB
Year: 2014
Language: english
10. To my wife, Veva Silva, whose intelligence, strength, beauty, and art
have greatly enriched my life.
—Steven Feuerstein
To my wife, Norma. Still melting my heart after a quarter century.
—Bill Pribyl
www.it-ebooks.info
12. Table of Contents
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
Part I. Programming in PL/SQL
1. Introduction to PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
What Is PL/SQL? 3
The Origins of PL/SQL 4
The Early Years of PL/SQL 4
Improved Application Portability 5
Improved Execution Authority and Transaction Integrity 5
Humble Beginnings, Steady Improvement 6
So This Is PL/SQL 7
Integration with SQL 7
Control and Conditional Logic 8
When Things Go Wrong 9
About PL/SQL Versions 11
Oracle Database 12c New PL/SQL Features 12
Resources for PL/SQL Developers 14
The O’Reilly PL/SQL Series 15
PL/SQL on the Internet 16
Some Words of Advice 17
Don’t Be in Such a Hurry! 17
Don’t Be Afraid to Ask for Help 18
Take a Creative, Even Radical Approach 19
2. Creating and Running PL/SQL Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Navigating the Database 21
Creating and Editing Source Code 22
SQL*Plus 23
v
www.it-ebooks.info
13. Starting Up SQL*Plus 24
Running a SQL Statement 26
Running a PL/SQL Program 27
Running a Script 29
What Is the “Current Directory”? 30
Other SQL*Plus Tasks 31
Error Handling in SQL*Plus 36
Why You Will Love and Hate SQL*Plus 36
Performing Essential PL/SQL Tasks 37
Creating a Stored Program 37
Executing a Stored Program 41
Showing Stored Programs 41
Managing Grants and Synonyms for Stored Programs 42
Dropping a Stored Program 43
Hiding the Source Code of a Stored Program 44
Editing Environments for PL/SQL 44
Calling PL/SQL from Other Languages 45
C: Using Oracle’s Precompiler (Pro*C) 46
Java: Using JDBC 47
Perl: Using Perl DBI and DBD::Oracle 48
PHP: Using Oracle Extensions 49
PL/SQL Server Pages 51
And Where Else? 51
3. Language Fundamentals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
PL/SQL Block Structure 53
Anonymous Blocks 55
Named Blocks 57
Nested Blocks 57
Scope 58
Qualify All References to Variables and Columns in SQL Statements 59
Visibility 62
The PL/SQL Character Set 65
Identifiers 67
Reserved Words 68
Whitespace and Keywords 70
Literals 70
NULLs 71
Embedding Single Quotes Inside a Literal String 72
Numeric Literals 73
Boolean Literals 74
The Semicolon Delimiter 74
vi | Table of Contents
www.it-ebooks.info
14. Comments 75
Single-Line Comment Syntax 75
Multiline Comment Syntax 76
The PRAGMA Keyword 76
Labels 77
Part II. PL/SQL Program Structure
4. Conditional and Sequential Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
IF Statements 83
The IF-THEN Combination 84
The IF-THEN-ELSE Combination 86
The IF-THEN-ELSIF Combination 87
Avoiding IF Syntax Gotchas 89
Nested IF Statements 90
Short-Circuit Evaluation 91
CASE Statements and Expressions 93
Simple CASE Statements 93
Searched CASE Statements 95
Nested CASE Statements 98
CASE Expressions 98
The GOTO Statement 100
The NULL Statement 101
Improving Program Readability 101
Using NULL After a Label 102
5. Iterative Processing with Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Loop Basics 105
Examples of Different Loops 106
Structure of PL/SQL Loops 107
The Simple Loop 108
Terminating a Simple Loop: EXIT and EXIT WHEN 109
Emulating a REPEAT UNTIL Loop 110
The Intentionally Infinite Loop 111
The WHILE Loop 112
The Numeric FOR Loop 114
Rules for Numeric FOR Loops 114
Examples of Numeric FOR Loops 115
Handling Nontrivial Increments 116
The Cursor FOR Loop 117
Example of Cursor FOR Loops 118
Table of Contents | vii
www.it-ebooks.info
15. Loop Labels 119
The CONTINUE Statement 120
Tips for Iterative Processing 123
Use Understandable Names for Loop Indexes 123
The Proper Way to Say Goodbye 124
Obtaining Information About FOR Loop Execution 126
SQL Statement as Loop 126
6. Exception Handlers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Exception-Handling Concepts and Terminology 129
Defining Exceptions 132
Declaring Named Exceptions 132
Associating Exception Names with Error Codes 133
About Named System Exceptions 136
Scope of an Exception 139
Raising Exceptions 140
The RAISE Statement 140
Using RAISE_APPLICATION_ERROR 141
Handling Exceptions 143
Built-in Error Functions 144
Combining Multiple Exceptions in a Single Handler 149
Unhandled Exceptions 149
Propagation of Unhandled Exceptions 150
Continuing Past Exceptions 153
Writing WHEN OTHERS Handling Code 155
Building an Effective Error Management Architecture 157
Decide on Your Error Management Strategy 158
Standardize Handling of Different Types of Exceptions 159
Organize Use of Application-Specific Error Codes 162
Use Standardized Error Management Programs 163
Work with Your Own Exception “Objects” 165
Create Standard Templates for Common Error Handling 167
Making the Most of PL/SQL Error Management 169
Part III. PL/SQL Program Data
7. Working with Program Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Naming Your Program Data 173
Overview of PL/SQL Datatypes 175
Character Data 176
Numbers 177
viii | Table of Contents
www.it-ebooks.info
16. Dates, Timestamps, and Intervals 178
Booleans 178
Binary Data 179
ROWIDs 179
REF CURSORs 179
Internet Datatypes 180
“Any” Datatypes 180
User-Defined Datatypes 181
Declaring Program Data 181
Declaring a Variable 181
Declaring Constants 182
The NOT NULL Clause 183
Anchored Declarations 183
Anchoring to Cursors and Tables 185
Benefits of Anchored Declarations 186
Anchoring to NOT NULL Datatypes 188
Programmer-Defined Subtypes 188
Conversion Between Datatypes 189
Implicit Data Conversion 189
Explicit Datatype Conversion 192
8. Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
String Datatypes 199
The VARCHAR2 Datatype 200
The CHAR Datatype 201
String Subtypes 202
Working with Strings 203
Specifying String Constants 203
Using Nonprintable Characters 205
Concatenating Strings 206
Dealing with Case 207
Traditional Searching, Extracting, and Replacing 210
Padding 213
Trimming 215
Regular Expression Searching, Extracting, and Replacing 216
Working with Empty Strings 227
Mixing CHAR and VARCHAR2 Values 229
String Function Quick Reference 231
9. Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Numeric Datatypes 241
The NUMBER Type 242
Table of Contents | ix
www.it-ebooks.info
17. The PLS_INTEGER Type 247
The BINARY_INTEGER Type 248
The SIMPLE_INTEGER Type 249
The BINARY_FLOAT and BINARY_DOUBLE Types 251
The SIMPLE_FLOAT and SIMPLE_DOUBLE Types 256
Numeric Subtypes 256
Number Conversions 257
The TO_NUMBER Function 258
The TO_CHAR Function 261
The CAST Function 267
Implicit Conversions 268
Numeric Operators 270
Numeric Functions 271
Rounding and Truncation Functions 271
Trigonometric Functions 272
Numeric Function Quick Reference 272
10. Dates and Timestamps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Datetime Datatypes 278
Declaring Datetime Variables 280
Choosing a Datetime Datatype 281
Getting the Current Date and Time 282
Interval Datatypes 284
Declaring INTERVAL Variables 286
When to Use INTERVALs 287
Datetime Conversions 289
From Strings to Datetimes 289
From Datetimes to Strings 292
Working with Time Zones 295
Requiring a Format Mask to Match Exactly 298
Easing Up on Exact Matches 299
Interpreting Two-Digit Years in a Sliding Window 299
Converting Time Zones to Character Strings 301
Padding Output with Fill Mode 302
Date and Timestamp Literals 302
Interval Conversions 304
Converting from Numbers to Intervals 304
Converting Strings to Intervals 305
Formatting Intervals for Display 306
Interval Literals 307
CAST and EXTRACT 308
The CAST Function 308
x | Table of Contents
www.it-ebooks.info
18. The EXTRACT Function 310
Datetime Arithmetic 311
Date Arithmetic with Intervals and Datetimes 311
Date Arithmetic with DATE Datatypes 312
Computing the Interval Between Two Datetimes 313
Mixing DATEs and TIMESTAMPs 316
Adding and Subtracting Intervals 317
Multiplying and Dividing Intervals 317
Using Unconstrained INTERVAL Types 318
Date/Time Function Quick Reference 319
11. Records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Records in PL/SQL 323
Benefits of Using Records 324
Declaring Records 326
Programmer-Defined Records 327
Working with Records 330
Comparing Records 337
Trigger Pseudorecords 338
12. Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Collections Overview 342
Collections Concepts and Terminology 343
Types of Collections 345
Collection Examples 345
Where You Can Use Collections 349
Choosing a Collection Type 354
Collection Methods (Built-ins) 356
The COUNT Method 357
The DELETE Method 358
The EXISTS Method 359
The EXTEND Method 360
The FIRST and LAST Methods 361
The LIMIT Method 362
The PRIOR and NEXT Methods 362
The TRIM Method 363
Working with Collections 365
Declaring Collection Types 365
Declaring and Initializing Collection Variables 369
Populating Collections with Data 374
Accessing Data Inside a Collection 379
Using String-Indexed Collections 380
Table of Contents | xi
www.it-ebooks.info
19. Collections of Complex Datatypes 385
Multilevel Collections 389
Working with Collections in SQL 398
Nested Table Multiset Operations 406
Testing Equality and Membership of Nested Tables 408
Checking for Membership of an Element in a Nested Table 409
Performing High-Level Set Operations 409
Handling Duplicates in a Nested Table 411
Maintaining Schema-Level Collections 412
Necessary Privileges 412
Collections and the Data Dictionary 413
13. Miscellaneous Datatypes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
The BOOLEAN Datatype 415
The RAW Datatype 417
The UROWID and ROWID Datatypes 417
Getting ROWIDs 418
Using ROWIDs 419
The LOB Datatypes 420
Working with LOBs 422
Understanding LOB Locators 423
Empty Versus NULL LOBs 425
Writing into a LOB 427
Reading from a LOB 430
BFILEs Are Different 431
SecureFiles Versus BasicFiles 436
Temporary LOBs 439
Native LOB Operations 442
LOB Conversion Functions 447
Predefined Object Types 447
The XMLType Type 448
The URI Types 451
The Any Types 453
Part IV. SQL in PL/SQL
14. DML and Transaction Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
DML in PL/SQL 462
A Quick Introduction to DML 462
Cursor Attributes for DML Operations 466
RETURNING Information from DML Statements 467
xii | Table of Contents
www.it-ebooks.info
20. DML and Exception Handling 468
DML and Records 470
Transaction Management 473
The COMMIT Statement 474
The ROLLBACK Statement 474
The SAVEPOINT Statement 475
The SET TRANSACTION Statement 476
The LOCK TABLE Statement 476
Autonomous Transactions 477
Defining Autonomous Transactions 478
Rules and Restrictions on Autonomous Transactions 479
Transaction Visibility 480
When to Use Autonomous Transactions 481
Building an Autonomous Logging Mechanism 482
15. Data Retrieval. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Cursor Basics 486
Some Data Retrieval Terms 487
Typical Query Operations 488
Introduction to Cursor Attributes 489
Referencing PL/SQL Variables in a Cursor 492
Choosing Between Explicit and Implicit Cursors 493
Working with Implicit Cursors 494
Implicit Cursor Examples 495
Error Handling with Implicit Cursors 496
Implicit SQL Cursor Attributes 498
Working with Explicit Cursors 500
Declaring Explicit Cursors 501
Opening Explicit Cursors 504
Fetching from Explicit Cursors 505
Column Aliases in Explicit Cursors 507
Closing Explicit Cursors 508
Explicit Cursor Attributes 510
Cursor Parameters 512
SELECT...FOR UPDATE 515
Releasing Locks with COMMIT 516
The WHERE CURRENT OF Clause 518
Cursor Variables and REF CURSORs 519
Why Use Cursor Variables? 520
Similarities to Static Cursors 521
Declaring REF CURSOR Types 521
Declaring Cursor Variables 522
Table of Contents | xiii
www.it-ebooks.info
21. Opening Cursor Variables 523
Fetching from Cursor Variables 524
Rules for Cursor Variables 527
Passing Cursor Variables as Arguments 530
Cursor Variable Restrictions 532
Cursor Expressions 533
Using Cursor Expressions 534
Restrictions on Cursor Expressions 536
16. Dynamic SQL and Dynamic PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
NDS Statements 538
The EXECUTE IMMEDIATE Statement 538
The OPEN FOR Statement 543
About the Four Dynamic SQL Methods 548
Binding Variables 550
Argument Modes 551
Duplicate Placeholders 553
Passing NULL Values 554
Working with Objects and Collections 555
Dynamic PL/SQL 557
Build Dynamic PL/SQL Blocks 558
Replace Repetitive Code with Dynamic Blocks 560
Recommendations for NDS 561
Use Invoker Rights for Shared Programs 561
Anticipate and Handle Dynamic Errors 562
Use Binding Rather than Concatenation 564
Minimize the Dangers of Code Injection 566
When to Use DBMS_SQL 569
Obtain Information About Query Columns 569
Meeting Method 4 Dynamic SQL Requirements 571
Minimizing Parsing of Dynamic Cursors 578
Oracle Database 11g New Dynamic SQL Features 579
Enhanced Security for DBMS_SQL 584
Part V. PL/SQL Application Construction
17. Procedures, Functions, and Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
Modular Code 592
Procedures 593
Calling a Procedure 596
The Procedure Header 596
xiv | Table of Contents
www.it-ebooks.info
22. The Procedure Body 596
The END Label 597
The RETURN Statement 597
Functions 597
Structure of a Function 598
The RETURN Datatype 601
The END Label 602
Calling a Function 603
Functions Without Parameters 604
The Function Header 604
The Function Body 605
The RETURN Statement 605
Parameters 607
Defining Parameters 608
Actual and Formal Parameters 608
Parameter Modes 609
Explicit Association of Actual and Formal Parameters in PL/SQL 613
The NOCOPY Parameter Mode Qualifier 617
Default Values 618
Local or Nested Modules 619
Benefits of Local Modularization 620
Scope of Local Modules 623
Sprucing Up Your Code with Nested Subprograms 623
Subprogram Overloading 624
Benefits of Overloading 625
Restrictions on Overloading 628
Overloading with Numeric Types 629
Forward Declarations 630
Advanced Topics 631
Calling Your Function from Inside SQL 631
Table Functions 637
Deterministic Functions 647
Implicit Cursor Results (Oracle Database 12c) 649
Go Forth and Modularize! 650
18. Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
Why Packages? 651
Demonstrating the Power of the Package 652
Some Package-Related Concepts 655
Diagramming Privacy 657
Rules for Building Packages 658
The Package Specification 658
Table of Contents | xv
www.it-ebooks.info
23. The Package Body 660
Initializing Packages 662
Rules for Calling Packaged Elements 666
Working with Package Data 667
Global Within a Single Oracle Session 668
Global Public Data 669
Packaged Cursors 669
Serializable Packages 674
When to Use Packages 677
Encapsulate Data Access 677
Avoid Hardcoding Literals 680
Improve Usability of Built-in Features 683
Group Together Logically Related Functionality 683
Cache Static Session Data 684
Packages and Object Types 685
19. Triggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
DML Triggers 688
DML Trigger Concepts 689
Creating a DML Trigger 691
DML Trigger Example: No Cheating Allowed! 696
Multiple Triggers of the Same Type 702
Who Follows Whom 703
Mutating Table Errors 705
Compound Triggers: Putting It All in One Place 706
DDL Triggers 710
Creating a DDL Trigger 710
Available Events 713
Available Attributes 713
Working with Events and Attributes 715
Dropping the Undroppable 718
The INSTEAD OF CREATE Trigger 719
Database Event Triggers 720
Creating a Database Event Trigger 721
The STARTUP Trigger 722
The SHUTDOWN Trigger 723
The LOGON Trigger 723
The LOGOFF Trigger 723
The SERVERERROR Trigger 724
INSTEAD OF Triggers 728
Creating an INSTEAD OF Trigger 728
The INSTEAD OF INSERT Trigger 730
xvi | Table of Contents
www.it-ebooks.info
24. The INSTEAD OF UPDATE Trigger 732
The INSTEAD OF DELETE Trigger 733
Populating the Tables 733
INSTEAD OF Triggers on Nested Tables 734
AFTER SUSPEND Triggers 736
Setting Up for the AFTER SUSPEND Trigger 736
Looking at the Actual Trigger 738
The ORA_SPACE_ERROR_INFO Function 739
The DBMS_RESUMABLE Package 740
Trapped Multiple Times 742
To Fix or Not to Fix? 743
Maintaining Triggers 743
Disabling, Enabling, and Dropping Triggers 743
Creating Disabled Triggers 744
Viewing Triggers 745
Checking the Validity of Triggers 746
20. Managing PL/SQL Code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749
Managing Code in the Database 750
Overview of Data Dictionary Views 751
Display Information About Stored Objects 753
Display and Search Source Code 753
Use Program Size to Determine Pinning Requirements 755
Obtain Properties of Stored Code 756
Analyze and Modify Trigger State Through Views 757
Analyze Argument Information 758
Analyze Identifier Usage (Oracle Database 11g’s PL/Scope) 759
Managing Dependencies and Recompiling Code 762
Analyzing Dependencies with Data Dictionary Views 763
Fine-Grained Dependency (Oracle Database 11g) 767
Remote Dependencies 769
Limitations of Oracle’s Remote Invocation Model 772
Recompiling Invalid Program Units 773
Compile-Time Warnings 777
A Quick Example 777
Enabling Compile-Time Warnings 778
Some Handy Warnings 780
Testing PL/SQL Programs 788
Typical, Tawdry Testing Techniques 789
General Advice for Testing PL/SQL Code 793
Automated Testing Options for PL/SQL 794
Tracing PL/SQL Execution 795
Table of Contents | xvii
www.it-ebooks.info
25. DBMS_UTILITY.FORMAT_CALL_STACK 796
UTL_CALL_STACK (Oracle Database 12c) 798
DBMS_APPLICATION_INFO 801
Tracing with opp_trace 803
The DBMS_TRACE Facility 804
Debugging PL/SQL Programs 808
The Wrong Way to Debug 809
Debugging Tips and Strategies 811
Using Whitelisting to Control Access to Program Units 816
Protecting Stored Code 818
Restrictions on and Limitations of Wrapping 818
Using the Wrap Executable 819
Dynamic Wrapping with DBMS_DDL 819
Guidelines for Working with Wrapped Code 821
Introduction to Edition-Based Redefinition (Oracle Database 11g Release 2) 821
21. Optimizing PL/SQL Performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
Tools to Assist in Optimization 827
Analyzing Memory Usage 827
Identifying Bottlenecks in PL/SQL Code 827
Calculating Elapsed Time 833
Choosing the Fastest Program 834
Avoiding Infinite Loops 836
Performance-Related Warnings 837
The Optimizing Compiler 838
Insights on How the Optimizer Works 840
Runtime Optimization of Fetch Loops 843
Data Caching Techniques 844
Package-Based Caching 845
Deterministic Function Caching 850
THe Function Result Cache (Oracle Database 11g) 852
Caching Summary 868
Bulk Processing for Repeated SQL Statement Execution 869
High-Speed Querying with BULK COLLECT 870
High-Speed DML with FORALL 877
Improving Performance with Pipelined Table Functions 888
Replacing Row-Based Inserts with Pipelined Function-Based Loads 889
Tuning Merge Operations with Pipelined Functions 896
Asynchronous Data Unloading with Parallel Pipelined Functions 898
Performance Implications of Partitioning and Streaming Clauses in Parallel
Pipelined Functions 902
Pipelined Functions and the Cost-Based Optimizer 903
xviii | Table of Contents
www.it-ebooks.info
27. "What's that? un compliment?"
"No, I am not joking. Do you know, I love these rocks, this wild,
picturesque spot, where every pathway, every stone awakens in me
so many feelings and thoughts that have nothing in common with
my dull, grey, everyday life.... And whenever I was here before, I
always thought how beautiful it would be to come with some
charming, poetical creature—in fact, to come as I have come to-day.
And when I go home I shall say, 'Now let thy servant depart in
peace!'" ...
The idea passed through Mimotchka's head: "Is he going to allow
himself to?" ... But no, he had already begun talking again about the
horses. Then they were both silent. They had to get down below by
a steep, narrow path. Osman rode on in front, to show the way.
It had got dark. The moon had not yet made her appearance.
"This doesn't look much like a moonlight night. You said there would
be a moon."
"Wait a little, only wait. There will be a moon."
"But we shan't see anything down there."
Mimotchka began to get alarmed at the darkness.
"Why shan't we see anything? Don't you see the rocks? How
beautiful that pass is! And the moon will come out directly."
"Yes, but while we are waiting for the moon it will get late, and
when shall we get back?"
"Late? What does it matter if it is late? It will be as light as day for
us to ride back when the moon is up. You are not going anywhere
this evening, are you?"
"No, I am not going anywhere, but mamma will be uneasy."
"She won't be uneasy, because she knows you are with me. And why
think of going back when it is so beautiful here? But women never
do understand how to enjoy the present moment. I pity them! Then
28. you don't care for it here? I thought you were more sensitive to the
beauties of nature.... Look at these rocks, at that sky, at those
stars.... Do you remember those lines of Musset—
'J'aime! voilà le mot que la nature entière
Crie au vent qui l'emporte, à l'oiseau qui le suit!
Sombre et dernier soupir que poussera la terre
Quand elle tombera dans l'éternelle nuit;
Oh! vous le murmurez dans vos sphères sacrées,
Etoiles du matin, ce mot triste et charmant!
La plus faible de vous, quand Dieu vous a crées,
A voulu traverser les plaines éthérées,
Pour chercher le soleil, son immortel amant.
Elle s'est élancée au sein des nuits profondes.
Mais une autre l'aimait elle-meme; et les mondes
Se sont mis en voyage autour du firmament.'
How beautiful they are, aren't they? I am sorry I can't see your face.
I should like to know if you look as you always do."
"And how do I always look?"
"Cold, severe.... Like a general's wife."
"A general's wife? Naturally, I look what I am."
"Don't calumniate yourself. You are a woman. You should look like a
woman, such a woman as stood there on the top of those rocks,
wavering between sacrifice and treachery."
"But I don't in the least wish to resemble her."
"Why?"
"Because she behaved odiously."
"Perfidiously, yes, but she acted like a woman, a weak, false woman.
And that is what pleases me. I like weakness in women. I don't care
about strong-minded women-heroines. Let those who will sing their
praises, I shall never be among their admirers. Strength of mind is
as little suited to a woman as physical strength. A woman should be
29. all weakness, all love, all tenderness. Let her weakness make her
false. What does it matter as long as she is charming!... But you,
how would you have acted in her place? Imagine that you are in love
with someone—well, say, for instance, with me. I hope that such a
supposition made in joke won't offend you. Imagine, then, that you
are in love with me, here, now, as you are, in your present position."
"In my present position?... I think that if I were in love with you, I
should endeavour that you should never find it out."
"And why so?"
"Because I am married, I am not free."
"La belle raison!"
"Comment, ce n'est pas une raison?... What would you say if your
wife.."
At the mention of Spiridon Ivanovitch, Valerian Nicolaevitch had
frowned; at the mention of his wife a bored, weary expression
overspread his countenance. Mimotchka knew the expression well,
and she always rejoiced at it. Although she had heard from the
baroness that his wife was a charming woman, still it was more
agreeable to her to think that she was dull, unsuited to him, and as
little wanted as Spiridon Ivanovitch himself. If he were happy with
her, he would not come away from her, and would not have such a
pale, weary looking face and sunken cheeks, would he?... No; he
was probably unhappy and suffering, and only did not complain
because he was too proud. Poor dear!...
Meanwhile they had got down to the pass, and Valerian Nicolaevitch
proposed to Mimotchka to dismount and walk to a place from where
he considered the view of the rocks to be even finer. Osman led
away the horses, and they made their way over the stones by the
side of a murmuring mountain stream. A high, perpendicular rock
rose behind them like a menacing wall. It seemed to Mimotchka as if
she were descending into the bowels of the earth, or as if she were
at the bottom of a deep well. The steppe across which they had
galloped was so high above her head, and the sky, on which the
30. long-expected moon had at last appeared, illuminating the rocks and
their picturesque verdure, seemed so far off.
"Well, how do you like it?" ...
"C'est féerique," murmured Mimotchka "c'est féerique!" And what
stillness, what utter stillness! No; decidedly she is somewhere not on
the earth. And for an instant, for the last time, the disquieting
thought came into Mimotchka's head. Had she done right to come
here? He had asked her to come, but perhaps he would have had a
better opinion of her if she had not come. But, no; what nonsense!
What harm is there? Everybody comes here to admire nature, and
she has also come to admire nature. It's no use to come to the
Caucasus and not visit its picturesque parts. Otherwise afterwards,
when she looks at photographs, she will find that she has not seen
anything. Why doesn't Vava ride on horseback? She might have
come with them. And what harm is there in her having come here
alone with him? If she were to have gone with him to some
restaurant now, that would have been dreadful! (But of course she
would never have gone with him.) And they have only come here to
admire nature. Yes, and besides, after all, they have the Tartar
groom with them. Somewhere in the distance she can hear a horse
neighing; those are their horses and Osman.
And, having quieted her conscience by such reflections, Mimotchka
repeated, "C'est féerique!" ... And she sincerely admired the
picturesque rocks, and Valerian Nicolaevitch sincerely admired her.
"You are not tired?" asked he, spreading out his cloak upon the
ground. "Sit down; I am sorry that I have already told you the
legend about the poor youth who was killed here. I ought to have
told you it now, here, in view of the rocks.... Well, I must tell you
something else."
Decidedly Mimotchka was no longer on earth. It was impossible that
that could be the same moon that shone on Spiridon Ivanovitch and
baby. That was somewhere far away, but this was quite a different
moon so benignly protecting them. And what a soft, languorous,
31. magic light she sheds over that little corner where they are alone
together and so far from the crowds of people, from the noise and
the world....
How quiet it is, how quiet!... What moments of full, perfect,
unalloyed happiness! If one could only fall asleep here, die, and
never awake again, never come back to life. And he was with her,
near her, and gazing at her as her humble, faithful slave, as her
devoted friend.
And for the first time in her life Mimotchka no longer thought if she
was looking pretty or not, nor how she was dressed, nor what her
aunts would say of her. She felt somehow strange, as if she were
neither asleep nor awake. She had never experienced anything like it
before. And her breathing was oppressed. For some moments she
was afraid she was going to faint.
A stone fell and they both started. He drew still nearer to her. Were
you frightened? Is that really him? Yes; those are his eyes shining.
How pale he is! And how pale the moon is! What is it all—a dream
or a reality? And Mimotchka, wishing to break through this fearful,
oppressive silence and to get the better of the numbness
overpowering her, repeated again, "C'est féerique, c'est féerique!"
And really there was something fairy-like, something extraordinary
about the evening. And the most extraordinary thing of all was that
Valerian Nicolaevitch took Mimotchka into his arms and kissed her—
kissed her eyes, her lips, and her hair. How did it happen? How could
he allow himself to, and how could she permit it?... Oh, "Castle of
Love and Treachery!" Then he told her, in a caressing whisper, that it
must have happened. Well, of course, once it had happened,
probably it must have happened. But anyhow they must go home
now quick, quick!... And when he put her into the saddle, he said to
her, "My darling! My beautiful darling!" ... And she, helplessly putting
her hair straight, said, "Il fait tard, il fait tard!" But she looked more
radiantly beautiful than Spiridon Ivanovitch had ever seen her look,
in spite of the fact of his commanding a division and having a whole
division under his supervision.
32. They must ride back fast, very fast; but Mimotchka had somehow
lost her riding-whip on the mountain. Osman and Valerian
Nicolaevitch ran back to find it. They found the whip, and all three
set off furiously across the steppe, now flooded by the moonlight.
The lights of Kislovodsk were shining when they rode up the long
alley of poplars. From the chief hotel came the sounds of a waltz.
Mamma was looking out for her daughter, sitting at the open window
and getting uneasy.
"Here you are at last!" said she. "I was getting afraid that something
had happened to you, that you had been attacked.... Well, what?
Are you tired?" ...
"Yes; we hurried back so."
"Come in, Valerian Nicolaevitch, come in and have some tea."
Valerian Nicolaevitch thanked her, but refused. He had promised to
go to a party somewhere. And when he had helped Mimotchka down
from the saddle, he came to the gate with her, and whispered to her,
"À demain!" and, with a look and a pressure of the hand, thanked
her for going with him.
When she came in, Mimotchka refused tea and all refreshment, but
went straight into her own room and hurriedly began undressing.
She did not want to see anyone; and having put out the candle, she
laid her radiant face on the pillow. How had it happened? She had
no feeling either of repentance or of shame. She only felt happy and
peaceful. This—fall, this—terrible step; it was a stain that could not
be effaced; it was—a sin, she thought to herself; but how easy it
had been to commit it! Maintenant c'est fini, elle est une femme
perdue! And her husband?... But she mustn't think about it—no, she
must not; better think about him: Val! Val!... And Mimotchka went
off to sleep soundly and tranquilly, as only happy people with a pure
and easy conscience sleep.
In the morning they met under the verandah of the Kursaal. There
was only a month left before they returned to Petersburg, and how
much there was to talk over, how much for them to say to each
33. other. They had to tell each other how they had fallen in love at
sight, at their very first meeting, even then, at Rostoff.... Un coup de
foudre!... How afterwards they had remembered each other, looked
out for each other, and been jealous of each other, until they met
again and became acquainted.... And how everything had happened
as it must have done. They had to tell each other that they had
always waited for each other, that they had foreseen this, and now
were bound to each other for all eternity. Oui, c'est pour la vie, c'est
pour la vie!... And principally they had to arrange about the time and
place of their meetings.
He lived alone, and by taking proper precautions Mimotchka might
come to his rooms. This would be the most convenient way. He
would not have proposed it to her if there had been any risk, for
Mimotchka's honour and good name were above all things dear to
him. And Mimotchka, having reconnoitred and assured herself that
"Maman ne se doute de rien," and that she and Princess X—— and
all their circle were completely taken with the hussar Anutin and his
intended bride, was tranquillised, and, taking all due precautions,
came to his rooms.
How she enjoyed being there! Everything that surrounded him and
that he used bore the stamp of his exquisite taste. Mimotchka
turned over his letter-case, his albums, and looked at the portraits of
his wife and children.... His wife was a great deal too handsome, and
excited her jealousy, but Valerian Nicolaevitch pacified her:
"Handsome?... Yes; she is handsome, but that is not sufficient. Une
femme doit plaire. That is the chief thing." His wife was not suited to
him. A cold, lifeless beauty; a soulless creature, a blue-stocking, a
second Lady Byron.... She was a mother, only a mother, not a
woman to love. She lived for the children, and expected him to do
the same. It was absurd. The children would live and enjoy life
themselves some day. And meanwhile he wishes to enjoy his life.
Another life will not be granted to him. He must live, live....
And he kissed Mimotchka, kissed her eyes, and said, "Let me drink
of this sea!"
34. Mimotchka was not aware before that there was a sea in her eyes.
Having got over her jealousy, Mimotchka hid the photograph of his
wife further on in the book, so that it should not meet her eyes, and
went on turning over his things.
Valerian Nicolaevitch had forty neckties and forty pairs of socks, and
for each necktie there were socks to match. And what a lot of
breloques, pins, and rings besides, which he varied, also selecting
them to match the neckties. In general, he was rather a dandy, but
Mimotchka liked it. She looked over and arranged the forty neckties
in a rosewood box, separating one necktie from the other with a
sachet of his favourite perfume, "Cherry-blossom." And she told him
which neckties she liked, and which she didn't like, and which he
was to wear the next day. And one necktie she called the necktie of
"Love and Treachery." That was her favourite. Occasionally, chiefly
on the days she received letters from Spiridon Ivanovitch, Mimotchka
had a fit of the "blue devils," as she called it, and she reproached
herself for her guilt towards her husband. "Je suis une femme
perdue," she said. "Anyhow, I have wronged him, injured him.... And
he has in nowise deserved it. And what will happen if he gets to
know? He will kill me or turn me out of the house ... Enfin je suis
une femme perdue. And you yourself must despise me. Yes, you
despise me, Val; I see you do." ...
"What a child you are!" And he tried to convince her that there was
nothing to despise her for. "On vit comme on peut. Look at the
people we know; look at Marie Petrovna; look at Marie Lvovna!" ...
Mimotchka reflected and remembered. Certainly, there was both
Marie Petrovna and Marie Lvovna. And Nettie, above all! But then,
on the other hand, there was Anna Vassilievna, and Aunt Julia, and
mamma. No, there were still some honest, good women, not like
her. Otherwise, why such harsh, pitiless judgments, why so much
hypocrisy in the world?... Valerian Nicolaevitch explained it all to her.
"Don't you see, people suffer and bear too much because they don't
seize the moments of happiness that fall to their share."
35. "Oh yes, people do suffer."
And she told him all about Spiridon Ivanovitch, and how dull it was
for her with him. She was rather afraid that Val would despise her
for having an old husband—he had so thundered against mercenary
love. But no, it did not disturb him at all. In general, since the ride to
the "Castle of Love and Treachery," his feelings towards Spiridon
Ivanovitch had quite changed. He did not even frown when
Mimotchka mentioned his name, but, on the contrary, he
endeavoured to instil into her that with such a husband she could
lead a very pleasant, easy life. Only she must be wise. And he
proceeded to give her some advice.
In the winter he would come to Petersburg. His wife would remain at
Kieff with the children, and they would spend a beautiful winter
together. Only there must be no imprudences. He praised Mimotchka
because while she was here she had behaved so rightly, so quietly,
and so naturally. Neither her mamma, who loved her so tenderly, nor
that sharp girl, Vava, had noticed anything whatever. That was as it
should be: yes, just as it should be. They loved one another, and
they must set up a wall between themselves and the world. Their
secret was the wall behind which they could love each other boldly
and fully. They must hide their happiness like a treasure, like
something precious.
"L'amourette que l'on ébruite
Est un rosier déraciné."
Let people try and guess if they chose to, let them suspect what
they liked, but don't let them know anything.
Mimotchka told him how she came to marry, how everybody had
persuaded her to, and how she could never have made up her mind
to it by herself. Valerian Nicolaevitch did not understand why. It was
wise, and she had acted very rightly. Money was not the last thing in
life; if it was not happiness, at any rate it was the key to happiness.
Only, these last four years she had not understood how to arrange
36. her life. She herself had made it dull. Everything depends on
ourselves.
But up till now she had not cared for anyone. She had never loved
before, and if she had not met him, Val, here, she would never have
known the happiness of love. But now, c'est pour la vie, n'est-ce-
pas?
"Oui, c'est pour la vie!"
He himself seemed to be deeply unhappy in his family life. His wife
was a cold, hard pedant, who was incapable of responding to the
transports of his ardent soul. She was une femelle; yes, that was the
word. Why had he married her?... It was a long story. Some day he
would tell it to Mimotchka, afterwards, but meanwhile ... "Let me
drink of this sea!" ... And he kissed her eyes.
For the first two weeks he told Mimotchka that he should certainly
come to Petersburg, and they talked about the delightful evenings
they would spend together at theatres and concerts. They would
meet every day. But as the time of separation drew near these plans
somewhat changed.
He received a business letter from Kieff. It appeared he would hardly
be able to get away to Petersburg. An affair was impending, an
important, complicated lawsuit, with the particulars of which he
made Mimotchka acquainted. He was to defend a celebrated thief, a
regular scoundrel.
"But why defend a scoundrel?" asked Mimotchka; "then you don't
think him guilty?"
"I am convinced of his guilt!"
"And you would defend him quand meme?"
"Every man has a right to a defence. It's easy enough to acquit an
innocent man. His innocence itself speaks for him. But to pardon a
guilty man, to turn to him indulgently and mercifully, as a Christian
should turn to his brother, whoever he is, much intelligence and
much knowledge of the human heart is required. Christ did not
37. judge, Christ justified all, and for this very reason, and to awaken in
the juries' hearts that divine spark which exists in everyone of us ..."
"But surely they won't acquit him?"
"Perhaps they will."
"What, a good-for-nothing fellow like that! I would transport him
with hard labour. And because of him we shan't see each other any
more. How I hate him! And yet you are going to defend him." ... And
Mimotchka began to cry.
"What a child you are!" said Valerian Nicolaevitch, and kissed her
eyes.
"Then we shan't see each other any more?"
"What can we do?... Fate is jealous." ...
And when, three days before their departure, Mimotchka cried
bitterly on his shoulder, he stroked her hair and said rather absently:
"What can we do? We must submit. We were happy.... Fate is
jealous.... Voyons, du courage.... We must look the inevitable in the
face.... Let us be thankful to Providence for these bright moments.
You are still so young....
"You will know new feelings And choose new friends.'"
"Jamais, jamais.... How can you talk like that! Don't you care if I get
to love someone else? Tu ne m'as jamais aimée!... Oh, Val, Val!"
"Enfant! voyons, ne pleurez donc pas.... What does it matter? I have
had the spring flowers, someone else will have the fruits.... Don't
look so terrified!... Je connais la vie, voilà tout!... You're not angry
with me?... No!... Let me kiss your eyes! How I love kissing them I
... Fate willed it otherwise.... We have gathered the flowers."
And then came a verse from Heine and a verse from Fett.
"I shall not forget you; no, never, and do you remember too,
'Rappelle-toi, lorsque l'aurore craintive.'" ...
38. But Mimotchka only went on crying quietly and silently, shaking her
head and kissing his hands, while her copious tears dropped like hail
on the necktie of "Love and Treachery."
Then they exchanged turquoise rings. Mimotchka had her
photograph done for him in her riding-habit, on the same horse on
which she had ridden to the "Castle of Love and Treachery," and he
had his done for her in his Tcherkesk costume. They had very much
wished to visit the "Castle" again, but somehow something always
hindered their doing so....
Meanwhile mamma was already packing up and scolding Katia, who
seemed bereft of her senses, forgetting orders, letting things drop
out of her hands, and packing heavy garments on the top of light
ones.
Vava tied up the copybooks containing her impressions of her travels
and her projects of a home for destitute children, and wrote down
the addresses of her Caucasian friends.
And Katia, on her knees before the open trunk, spread tissue paper
over Mimotchka's plush jacket, and from time to time big tears
dropped on the jacket and on the linen laid over it. Oh, those
Caucasian turquoises!...
Early in the morning a travelling carriage stood at the door of
Baranoffsky's apartments. Vava shook hands warmly with her
friends, who had come to say good-bye to her. She had very much
improved during the summer, had got sunburnt, stouter, and
stronger. She had spent a lovely summer here, and how sorry she
was to part from those blue mountains, from those walks and little
paths in the wood, and from her good friends! Ah, how sorry, how
sorry! And Vava, forgetting all about her mother's strictness and
home regulations, and her previous unsuccessful attempts to
introduce her friends, invited them all—yes, all—to come and see her
—please—be sure to—as soon as any one of them came to
39. Petersburg! She would be so happy!... "Don't forget, No. 5
Millionnaia, apartment 2.... Please do be sure to come!"
Mimotchka came out in a travelling hat, in a waterproof, with a
travelling bag on her arm, and muffled up in a thick gauze veil. She
was calm and composed. She had cried away all her tears the day
before.
Valerian Nicolaevitch was kind enough to offer to accompany them
on horseback as far as Essentouki. He was in his Tcherkesk costume,
leaning picturesquely on his saddle, and humming a song of Kapri's,
"I remember the blissful meetings." ...
Katia ran out with bandboxes in her hands, weeping and panting....
Mamma stared at her in amazement. Everything was put in,
everything was in its place. The ladies took their seats and the
carriage drove off from Kislovodsk.
They said good-bye at Essentouki. Valerian Nicolaevitch kissed
mamma's hand, and she expressed the hope that he would come
and see them in Petersburg. Vava also invited him to come and see
her. She was so sorry that everything Caucasian was leaving her.
Mimotchka was silent, but gazed at him mournfully.
And the carriage drove on further in the direction of the station.
It was a grey, dull-looking morning, and a thick, fine rain beat
against the windows when the ladies woke up as they neared
Petersburg.
Rain, rain, rain.... A melancholy grey sky.... The villas round
Petersburg with their fir-tree plantations; the muddy, swampy roads
with the ditches at the edge and the thickly-grown bracken pass
before them ..., Moss, bilberry bushes, marsh and fog....
Here are the well-known market-gardens with the cabbages, and the
barracks, and the platform of the Petersburg railway station; the rain
has stopped and the sun is shining on the wet platform.
40. There is Spiridon Ivanovitch's orderly and there is Aunt Julia's
footman.
And here stands Spiridon Ivanovitch himself, resplendent, like a
peony, in his crimson-lined overcoat.... Mamma joyfully taps on the
window-pane to him. He has seen them, seen them and recognised
them!
Mimotchka's heart sinks. How old he looks, and what a stranger he
seems to her, what a stranger!... She wishes the train would not
stop, but would go on further and further and carry her away past....
But the train slackens speed, it stops. They must get out.
Here's Mdme. Lambert with Zina, and, oh my goodness, here's baby
with his nurse! He has come to meet his mamma! How he has
grown, how he has improved, and how sunburnt he has got, dear
little mite! And just look, he isn't a bit shy; he smiles, he says, "how-
do-you-do" to them all, stretches out his lips to be kissed by his
mother and grandmother and Vava.... And he salutes, yes, he has
learnt how to make a military salute, putting up his little hand to his
head and saying, "I wish you good health!" Oh, what a darling!
And grandmamma smothers baby with kisses, and tears of pride and
tenderness rise to her eyes, when baby, drawing himself up straight
in front of her, says to her, "I wish you good health, your
excellency!" And Spiridon Ivanovitch enfolds Mimotchka in his ample
embrace.
A week after their arrival they were all assembled at Aunt Julia's.
She was in a state of great jubiliation. Her son Vova was engaged,
and his fiancée was in every way most suitable. She was both
wealthy and well connected.... The engagement was not yet formally
announced, but the affair was quite settled. The fiancée was not
pretty and she was no longer very young, but she was over head
and ears in love with Vova. Aunt Julia liked her very much, and in
speaking to her sisters of the young lady she said: "Elle n'est pas
futile."
41. Aunt Julia thanked mamma very warmly for her care of Vava. Not to
speak of Vava's having much improved physically, she had also
morally changed, for the better; she was more self-controlled,
gentler, and more obedient. And so she was given a separate room
all to herself, where she could sleep, write, and study without Mdme.
Lambert.
"Well, so altogether you had a pleasant trip?" says Aunt Julia in
conclusion.
"Delightful, delightful. I am so glad Variashski sent us there."
"But how much prettier Mimotchka has grown! Why, she is simply
unrecognisable."
"It's striking!" says Aunt Mary. "Next summer I shall go to Kislovodsk
to get young and beautiful again."
Mimotchka smiles modestly and composedly.
"And that Netty!" says Aunt Sophy. "Haven't you heard what a
scandal there was?"
"No, what is it? Zina wrote something or other about it, but we could
not make out what she meant."
"She is separated from her husband, and has now disappeared from
Petersburg and gone off to Paris, where she changes her lovers as
often as her gloves. It's awful! She always did behave like a fool.
Just before her husband had to go to sea her conscience began to
get uneasy. If it had only kept quiet until he came back! No, she
goes to confession and tells everything to the priest, this and that,
and says she has committed a sin against her husband. The priest
directly says: 'And does your husband know of it? 'No,' she says.
'Well then, don't tell him of it.' And he explained to her why she was
to keep silence, that as she had sinned, she must suffer, but that he
must not suffer for it."
"They always say that," puts in Aunt Mary thoughtlessly, and
meeting Aunt Julia's inquiring gaze, she adds, "I have heard of many
such cases where the priests said that."
42. "Well she comes straight home from confession and says to her
husband, 'I went to the priest and told him all about my sin.' 'What
sin?' And there it was. What!... Scenes and explanations. He wants
to shoot himself and she wants to shoot herself. He wants to kill her,
to kill the other man, to kill himself. ... A la fin des fins he goes to
sea, and she, after throwing all the children on the old Poltavsteffs'
hands, goes off to her beloved and sets about getting a divorce.
After two months the other man cannot stand her any longer and
runs away from her. She takes poison, the doctors save her life, and
then she goes off to Paris. She has been there now already three
weeks, and there are very very ugly rumours about her." ...
"Oh, how sorry I am far the old Poltavsteffs!" says mamma: "how
dreadful it is for them!"
"I said a long time ago that she was in a dangerous way," says Aunt
Julia.
Mimotchka nods her head affirmatively.
"Well, à propos of love affairs," says Aunt Sophy, "is it true that in
the Caucasus, at the springs, there is so much flirting going on?"
"Ah, don't mention it!" answers mamma, smiling. "What things we
saw and what things we heard! And Variashski, too, just imagine!"
...
"And wasn't there anyone after Mimi? Est-ce qu'il y a eu quelqu'un
pour te faire la cour?... Et personne ne t'a donné dans l'œil?" ...
"Quelle idée, ma tante!... Why, there was no one there. At least,
there were many sympathetic, agreeable people, but nobody of that
sort." ...
And Mimotchka, smiling her old Petersburg smile, shakes her head in
denial.
"And is nature really so beautiful there?" asks Aunt Julia; "Vava goes
into ecstasies about the mountains."
43. "But they didn't see anything," said Spiridon Ivanovitch regretfully.
"How was it you never went to Bermamout? Why, I wrote and told
you to go. To be at Kislovodsk and not go to Bermamout! Oh, you!...
you were among the real mountains and never went to see them."
"But there was no one to go with," said Mimotchka, defending
herself. "The X—— 's had left before our arrival, and somehow we
three never managed it alone. I really did so try to go and see
everything."
"Yes, it must be very lovely there," says Aunt Mary, looking through
the stereoscope at some views of the Caucasus that Vava had
brought back. "How beautiful this is! What is it?"
"This?" says Mimotchka, bending over Aunt Mary to look through the
stereoscope. "This is the 'Castle of Love and Treachery.' They are
rocks that look like a castle, and that is what they are called."
"And is it really as beautiful? Did you go there?"
"Yes, I went there on horseback.... It's very beautiful, especially by
moon-light—c'est féerique."
44. *** END OF THE PROJECT GUTENBERG EBOOK MIMI'S MARRIAGE
***
Updated editions will replace the previous one—the old editions will
be renamed.
Creating the works from print editions not protected by U.S.
copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.
START: FULL LICENSE
46. PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK
To protect the Project Gutenberg™ mission of promoting the free
distribution of electronic works, by using or distributing this work (or
any other work associated in any way with the phrase “Project
Gutenberg”), you agree to comply with all the terms of the Full
Project Gutenberg™ License available with this file or online at
www.gutenberg.org/license.
Section 1. General Terms of Use and
Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand, agree
to and accept all the terms of this license and intellectual property
(trademark/copyright) agreement. If you do not agree to abide by all
the terms of this agreement, you must cease using and return or
destroy all copies of Project Gutenberg™ electronic works in your
possession. If you paid a fee for obtaining a copy of or access to a
Project Gutenberg™ electronic work and you do not agree to be
bound by the terms of this agreement, you may obtain a refund
from the person or entity to whom you paid the fee as set forth in
paragraph 1.E.8.
1.B. “Project Gutenberg” is a registered trademark. It may only be
used on or associated in any way with an electronic work by people
who agree to be bound by the terms of this agreement. There are a
few things that you can do with most Project Gutenberg™ electronic
works even without complying with the full terms of this agreement.
See paragraph 1.C below. There are a lot of things you can do with
Project Gutenberg™ electronic works if you follow the terms of this
agreement and help preserve free future access to Project
Gutenberg™ electronic works. See paragraph 1.E below.
47. 1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright law
in the United States and you are located in the United States, we do
not claim a right to prevent you from copying, distributing,
performing, displaying or creating derivative works based on the
work as long as all references to Project Gutenberg are removed. Of
course, we hope that you will support the Project Gutenberg™
mission of promoting free access to electronic works by freely
sharing Project Gutenberg™ works in compliance with the terms of
this agreement for keeping the Project Gutenberg™ name associated
with the work. You can easily comply with the terms of this
agreement by keeping this work in the same format with its attached
full Project Gutenberg™ License when you share it without charge
with others.
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.
1.E. Unless you have removed all references to Project Gutenberg:
1.E.1. The following sentence, with active links to, or other
immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project Gutenberg™
work (any work on which the phrase “Project Gutenberg” appears,
or with which the phrase “Project Gutenberg” is associated) is
accessed, displayed, performed, viewed, copied or distributed:
48. This eBook is for the use of anyone anywhere in the United
States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it away
or re-use it under the terms of the Project Gutenberg License
included with this eBook or online at www.gutenberg.org. If you
are not located in the United States, you will have to check the
laws of the country where you are located before using this
eBook.
1.E.2. If an individual Project Gutenberg™ electronic work is derived
from texts not protected by U.S. copyright law (does not contain a
notice indicating that it is posted with permission of the copyright
holder), the work can be copied and distributed to anyone in the
United States without paying any fees or charges. If you are
redistributing or providing access to a work with the phrase “Project
Gutenberg” associated with or appearing on the work, you must
comply either with the requirements of paragraphs 1.E.1 through
1.E.7 or obtain permission for the use of the work and the Project
Gutenberg™ trademark as set forth in paragraphs 1.E.8 or 1.E.9.
1.E.3. If an individual Project Gutenberg™ electronic work is posted
with the permission of the copyright holder, your use and distribution
must comply with both paragraphs 1.E.1 through 1.E.7 and any
additional terms imposed by the copyright holder. Additional terms
will be linked to the Project Gutenberg™ License for all works posted
with the permission of the copyright holder found at the beginning
of this work.
1.E.4. Do not unlink or detach or remove the full Project
Gutenberg™ License terms from this work, or any files containing a
part of this work or any other work associated with Project
Gutenberg™.
1.E.5. Do not copy, display, perform, distribute or redistribute this
electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
49. with active links or immediate access to the full terms of the Project
Gutenberg™ License.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.
1.E.7. Do not charge a fee for access to, viewing, displaying,
performing, copying or distributing any Project Gutenberg™ works
unless you comply with paragraph 1.E.8 or 1.E.9.
1.E.8. You may charge a reasonable fee for copies of or providing
access to or distributing Project Gutenberg™ electronic works
provided that:
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
50. about donations to the Project Gutenberg Literary Archive
Foundation.”
• You provide a full refund of any money paid by a user who
notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.
• You provide, in accordance with paragraph 1.F.3, a full refund of
any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.E.9. If you wish to charge a fee or distribute a Project Gutenberg™
electronic work or group of works on different terms than are set
forth in this agreement, you must obtain permission in writing from
the Project Gutenberg Literary Archive Foundation, the manager of
the Project Gutenberg™ trademark. Contact the Foundation as set
forth in Section 3 below.
1.F.
1.F.1. Project Gutenberg volunteers and employees expend
considerable effort to identify, do copyright research on, transcribe
and proofread works not protected by U.S. copyright law in creating
the Project Gutenberg™ collection. Despite these efforts, Project
Gutenberg™ electronic works, and the medium on which they may
be stored, may contain “Defects,” such as, but not limited to,
incomplete, inaccurate or corrupt data, transcription errors, a
copyright or other intellectual property infringement, a defective or
51. damaged disk or other medium, a computer virus, or computer
codes that damage or cannot be read by your equipment.
1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for
the “Right of Replacement or Refund” described in paragraph 1.F.3,
the Project Gutenberg Literary Archive Foundation, the owner of the
Project Gutenberg™ trademark, and any other party distributing a
Project Gutenberg™ electronic work under this agreement, disclaim
all liability to you for damages, costs and expenses, including legal
fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR
NEGLIGENCE, STRICT LIABILITY, BREACH OF WARRANTY OR
BREACH OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE TRADEMARK
OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL
NOT BE LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT,
CONSEQUENTIAL, PUNITIVE OR INCIDENTAL DAMAGES EVEN IF
YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.
1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you
discover a defect in this electronic work within 90 days of receiving
it, you can receive a refund of the money (if any) you paid for it by
sending a written explanation to the person you received the work
from. If you received the work on a physical medium, you must
return the medium with your written explanation. The person or
entity that provided you with the defective work may elect to provide
a replacement copy in lieu of a refund. If you received the work
electronically, the person or entity providing it to you may choose to
give you a second opportunity to receive the work electronically in
lieu of a refund. If the second copy is also defective, you may
demand a refund in writing without further opportunities to fix the
problem.
1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
52. INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.
1.F.5. Some states do not allow disclaimers of certain implied
warranties or the exclusion or limitation of certain types of damages.
If any disclaimer or limitation set forth in this agreement violates the
law of the state applicable to this agreement, the agreement shall be
interpreted to make the maximum disclaimer or limitation permitted
by the applicable state law. The invalidity or unenforceability of any
provision of this agreement shall not void the remaining provisions.
1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation,
the trademark owner, any agent or employee of the Foundation,
anyone providing copies of Project Gutenberg™ electronic works in
accordance with this agreement, and any volunteers associated with
the production, promotion and distribution of Project Gutenberg™
electronic works, harmless from all liability, costs and expenses,
including legal fees, that arise directly or indirectly from any of the
following which you do or cause to occur: (a) distribution of this or
any Project Gutenberg™ work, (b) alteration, modification, or
additions or deletions to any Project Gutenberg™ work, and (c) any
Defect you cause.
Section 2. Information about the Mission
of Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new computers.
It exists because of the efforts of hundreds of volunteers and
donations from people in all walks of life.
Volunteers and financial support to provide volunteers with the
assistance they need are critical to reaching Project Gutenberg™’s
goals and ensuring that the Project Gutenberg™ collection will
53. remain freely available for generations to come. In 2001, the Project
Gutenberg Literary Archive Foundation was created to provide a
secure and permanent future for Project Gutenberg™ and future
generations. To learn more about the Project Gutenberg Literary
Archive Foundation and how your efforts and donations can help,
see Sections 3 and 4 and the Foundation information page at
www.gutenberg.org.
Section 3. Information about the Project
Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-profit
501(c)(3) educational corporation organized under the laws of the
state of Mississippi and granted tax exempt status by the Internal
Revenue Service. The Foundation’s EIN or federal tax identification
number is 64-6221541. Contributions to the Project Gutenberg
Literary Archive Foundation are tax deductible to the full extent
permitted by U.S. federal laws and your state’s laws.
The Foundation’s business office is located at 809 North 1500 West,
Salt Lake City, UT 84116, (801) 596-1887. Email contact links and up
to date contact information can be found at the Foundation’s website
and official page at www.gutenberg.org/contact
Section 4. Information about Donations to
the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission of
increasing the number of public domain and licensed works that can
be freely distributed in machine-readable form accessible by the
widest array of equipment including outdated equipment. Many
54. small donations ($1 to $5,000) are particularly important to
maintaining tax exempt status with the IRS.
The Foundation is committed to complying with the laws regulating
charities and charitable donations in all 50 states of the United
States. Compliance requirements are not uniform and it takes a
considerable effort, much paperwork and many fees to meet and
keep up with these requirements. We do not solicit donations in
locations where we have not received written confirmation of
compliance. To SEND DONATIONS or determine the status of
compliance for any particular state visit www.gutenberg.org/donate.
While we cannot and do not solicit contributions from states where
we have not met the solicitation requirements, we know of no
prohibition against accepting unsolicited donations from donors in
such states who approach us with offers to donate.
International donations are gratefully accepted, but we cannot make
any statements concerning tax treatment of donations received from
outside the United States. U.S. laws alone swamp our small staff.
Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.
Section 5. General Information About
Project Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could be
freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose network of
volunteer support.
55. Project Gutenberg™ eBooks are often created from several printed
editions, all of which are confirmed as not protected by copyright in
the U.S. unless a copyright notice is included. Thus, we do not
necessarily keep eBooks in compliance with any particular paper
edition.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.
This website includes information about Project Gutenberg™,
including how to make donations to the Project Gutenberg Literary
Archive Foundation, how to help produce our new eBooks, and how
to subscribe to our email newsletter to hear about new eBooks.
56. Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!
ebookultra.com