SlideShare a Scribd company logo
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
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/
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/
Oracle PL SQL Programming Sixth Edition Steven Feuerstein
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
www.it-ebooks.info
www.it-ebooks.info
Steven Feuerstein
with Bill Pribyl
SIXTH EDITION
Oracle PL/SQL Programming
www.it-ebooks.info
Oracle PL/SQL Programming, Sixth Edition
by Steven Feuerstein with Bill Pribyl
Copyright © 2014 Steven Feuerstein, Bill Pribyl. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are
alsoavailableformosttitles(http://my.safaribooksonline.com).Formoreinformation,contactourcorporate/
institutional sales department: 800-998-9938 or corporate@oreilly.com.
Editor: Ann Spencer
Production Editor: Nicole Shelby
Copyeditor: Rachel Monaghan
Proofreader: Rachel Head
Indexer: Ellen Troutman
Cover Designer: Randy Comer
Interior Designer: David Futato
Illustrator: Rebecca Demarest
September 1995: First Edition
September 1997: Second Edition
September 2002: Third Edition
August 2005: Fourth Edition
September 2009: Fifth Edition
January 2014: Sixth Edition
Revision History for the Sixth Edition:
2014-01-22: First release
See http://oreilly.com/catalog/errata.csp?isbn=9781449324452 for release details.
Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly
Media, Inc. Oracle PL/SQL Programing, the image of ants, and related trade dress are trademarks of O’Reilly
Media, Inc.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and O’Reilly Media, Inc., was aware of a trade‐
mark claim, the designations have been printed in caps or initial caps.
While every precaution has been taken in the preparation of this book, the publisher and authors assume
no responsibility for errors or omissions, or for damages resulting from the use of the information contained
herein.
ISBN: 978-1-449-32445-2
[QG]
www.it-ebooks.info
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
www.it-ebooks.info
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Other documents randomly have
different content
"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
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
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
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,
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.
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
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!"
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."
"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
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
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.'" ...
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
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.
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."
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."
"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."
"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."
*** 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
THE FULL PROJECT GUTENBERG LICENSE
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.
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:
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
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
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
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,
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
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
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.
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.
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

More Related Content

PDF
Oracle PL SQL Programming Sixth Edition Steven Feuerstein
PDF
Oracle PL SQL Programming Animal Guide 5th Edition Steven Feuerstein
PDF
Oracle Plsql Programming Sixth Edition Steven Feuerstein Bill Pribyl
PDF
Resilient Oracle Plsql Building Resilient Database Solutions For Continuous O...
PDF
Oracle Essentials Oracle Database 12c Fifth Edition Rick Greenwald 2024 scrib...
PDF
Oracle Essentials Oracle Database 12c Fifth Edition Rick Greenwald download pdf
PDF
Mysql Cookbook Solutions For Database Developers And Administrators Dubois
PDF
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
Oracle PL SQL Programming Sixth Edition Steven Feuerstein
Oracle PL SQL Programming Animal Guide 5th Edition Steven Feuerstein
Oracle Plsql Programming Sixth Edition Steven Feuerstein Bill Pribyl
Resilient Oracle Plsql Building Resilient Database Solutions For Continuous O...
Oracle Essentials Oracle Database 12c Fifth Edition Rick Greenwald 2024 scrib...
Oracle Essentials Oracle Database 12c Fifth Edition Rick Greenwald download pdf
Mysql Cookbook Solutions For Database Developers And Administrators Dubois
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...

Similar to Oracle PL SQL Programming Sixth Edition Steven Feuerstein (20)

PDF
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
PDF
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
PDF
PROCEDURAL LANGUAGE/ STRUCTURED QUERY LANGUAGE.pdf
PDF
Oracle SQL Plus pocket reference 3rd ed Edition Jonathan Gennick
PDF
Ios 9 Programming Fundamentals With Swift Swift Xcode And Cocoa Basics 2nd Ed...
PPT
Weird Plsql
PDF
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
PDF
Practical Mlops Operationalizing Machine Learning Models 1st Edition Noah Gift
PDF
Getting Started With Impala Interactive Sql For Apache Hadoop 1st Edition Joh...
PDF
Designing Data Intensive Applications The Big Ideas Behind Reliable Scalable ...
PDF
High Performance Spark Best Practices for Scaling and Optimizing Apache Spark...
PDF
High Performance Spark Best Practices for Scaling and Optimizing Apache Spark...
PDF
Introducing Erlang Getting Started In Functional Programming 2nd Edition St L...
PDF
Oracle Sqlplus Pocket Reference 3rd Ed Jonathan Gennick
PDF
Object Storage with Swift Cloud storage administration through OpenStack 1. A...
PDF
邮:vukbank@gmail.com,黑客改gpa ,黑客技术,黑客改分,黑客改成绩,黑客修改成绩.重修过程中的学术支持和资源** 在重修过程中,学校通...
PDF
PDF
Programming C 40 Building Windows Web And Ria Applications For The Net With C...
PDF
Learning Spark Lightningfast Data Analytics 2nd Edition Jules S Damji
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
PROCEDURAL LANGUAGE/ STRUCTURED QUERY LANGUAGE.pdf
Oracle SQL Plus pocket reference 3rd ed Edition Jonathan Gennick
Ios 9 Programming Fundamentals With Swift Swift Xcode And Cocoa Basics 2nd Ed...
Weird Plsql
iOS 9 Programming Fundamentals with Swift Swift Xcode and Cocoa Basics 2nd Ed...
Practical Mlops Operationalizing Machine Learning Models 1st Edition Noah Gift
Getting Started With Impala Interactive Sql For Apache Hadoop 1st Edition Joh...
Designing Data Intensive Applications The Big Ideas Behind Reliable Scalable ...
High Performance Spark Best Practices for Scaling and Optimizing Apache Spark...
High Performance Spark Best Practices for Scaling and Optimizing Apache Spark...
Introducing Erlang Getting Started In Functional Programming 2nd Edition St L...
Oracle Sqlplus Pocket Reference 3rd Ed Jonathan Gennick
Object Storage with Swift Cloud storage administration through OpenStack 1. A...
邮:vukbank@gmail.com,黑客改gpa ,黑客技术,黑客改分,黑客改成绩,黑客修改成绩.重修过程中的学术支持和资源** 在重修过程中,学校通...
Programming C 40 Building Windows Web And Ria Applications For The Net With C...
Learning Spark Lightningfast Data Analytics 2nd Edition Jules S Damji
Ad

Recently uploaded (20)

PDF
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
PPTX
master seminar digital applications in india
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Classroom Observation Tools for Teachers
PPTX
Cell Types and Its function , kingdom of life
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PPTX
Cell Structure & Organelles in detailed.
PPTX
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PPTX
GDM (1) (1).pptx small presentation for students
Black Hat USA 2025 - Micro ICS Summit - ICS/OT Threat Landscape
VCE English Exam - Section C Student Revision Booklet
O7-L3 Supply Chain Operations - ICLT Program
GENETICS IN BIOLOGY IN SECONDARY LEVEL FORM 3
master seminar digital applications in india
Chinmaya Tiranga quiz Grand Finale.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Classroom Observation Tools for Teachers
Cell Types and Its function , kingdom of life
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
Microbial diseases, their pathogenesis and prophylaxis
Pharmacology of Heart Failure /Pharmacotherapy of CHF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Cell Structure & Organelles in detailed.
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
human mycosis Human fungal infections are called human mycosis..pptx
GDM (1) (1).pptx small presentation for students
Ad

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
  • 8. Steven Feuerstein with Bill Pribyl SIXTH EDITION Oracle PL/SQL Programming www.it-ebooks.info
  • 9. Oracle PL/SQL Programming, Sixth Edition by Steven Feuerstein with Bill Pribyl Copyright © 2014 Steven Feuerstein, Bill Pribyl. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are alsoavailableformosttitles(http://my.safaribooksonline.com).Formoreinformation,contactourcorporate/ institutional sales department: 800-998-9938 or [email protected]. Editor: Ann Spencer Production Editor: Nicole Shelby Copyeditor: Rachel Monaghan Proofreader: Rachel Head Indexer: Ellen Troutman Cover Designer: Randy Comer Interior Designer: David Futato Illustrator: Rebecca Demarest September 1995: First Edition September 1997: Second Edition September 2002: Third Edition August 2005: Fourth Edition September 2009: Fifth Edition January 2014: Sixth Edition Revision History for the Sixth Edition: 2014-01-22: First release See http://oreilly.com/catalog/errata.csp?isbn=9781449324452 for release details. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. Oracle PL/SQL Programing, the image of ants, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc., was aware of a trade‐ mark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. ISBN: 978-1-449-32445-2 [QG] www.it-ebooks.info
  • 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
  • 26. Other documents randomly have different content
  • 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
  • 45. THE FULL PROJECT GUTENBERG 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