وبلاگ بلیان

Oracle PL/SQL by Example (4th Edition)

معرفی کتاب «Oracle PL/SQL by Example (4th Edition)» نوشتهٔ Benjamin Rosenzweig, Elena Silvestrova Rakhimov، منتشرشده توسط نشر Prentice Hall ; Pearson Education [distributor در سال 2008. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Oracle PL/SQL by Example (4th Edition)» در دستهٔ بدون دسته‌بندی قرار دارد.

This book is a joke. Page 1 of Chapter 1 states "In addition, PL/SQL can be used to develop applications for browsers such as Netscape" - Netscape? Page 9 states "The SELECT statement in the preceding example is supported by multiple versions of Oracle. However, starting with Oracle 9i, the new ANSI 1999 SQL standard is supported as well" - the new ANSI 1999 standard? The only updating that I could see was a few pages in the introduction. Not only has the book not been updated, the book is full of typos and errors that probably have existed since the first edition. The examples don't agree with the explanations of the examples. I had to keep running the code to see which was correct. SQL Developer is ignored (as it did not exist when the only effort was put into this book ten years ago). The authors were too lazy to really update the book so they just slapped a new cover on it and called it updated. Note the dates on the other reviews. Do yourself a favor and do not waste your money on this book.

This integrated learning solution teaches all the Oracle PL/SQL skills you need, hands-on, through real-world labs, extensive examples, exercises, and projects! Completely updated for Oracle 11g, Oracle PL/SQL by Example, Fourth Edition covers all the fundamentals, from PL/SQL syntax and program control through packages and Oracle 11g’s significantly improved triggers.

One step at a time, you’ll walk through every key task, discovering the most important PL/SQL programming techniques on your own. Building on your hands-on learning, the authors share solutions that offer deeper insights and proven best practices. End-of-chapter projects bring together all the techniques you’ve learned, strengthening your understanding through real-world practice.

This book’s approach fully reflects the authors’ award-winning experience teaching PL/SQL programming to professionals at Columbia University. New database developers and DBAs can use its step-by-step instructions to get productive fast; experienced PL/SQL programmers can use this book as a practical solutions reference. Coverage includes

• Mastering basic PL/SQL concepts and general programming language fundamentals, and understanding SQL’s role in

PL/SQL

• Using conditional and iterative program control techniques, including the new CONTINUE and CONTINUE WHEN statements

• Efficiently handling errors and exceptions

• Working with cursors and triggers, including Oracle 11g’s powerful new compound triggers

• Using stored procedures, functions, and packages to write modular code that other programs can execute

• Working with collections, object-relational features, native dynamic SQL, bulk SQL, and other advanced PL/SQL capabilities

• Handy reference appendices: PL/SQL formatting guide, sample database schema, ANSI SQL standards reference, and

more

Benjamin Rosenzweig is a Software Development Manager at Misys. Previously he was a Principal Consultant at Oracle. His experience ranges from creating an electronic Tibetan—English Dictionary in Kathmandu, Nepal, to supporting presentation centers at Goldman Sachs and managing trading systems at TIAA-CREF. As an instructor at Columbia University’s Computer Technology and Application Program, he was awarded the Outstanding Teaching Award. Rosenzweig wrote and presented Oracle Forms Developer: The Complete Video Course, and coauthored Oracle Web Application Programming for PL/SQL Developers.

Elena Silvestrova Rakhimov is Senior Developer and Team Lead at Alea Software. She has more than fifteen years of experience in database development in a wide spectrum of enterprise and business environments, ranging from non-profit organizations to Wall Street. She has taught database programming at Columbia University.

Contents

Acknowledgments xiv

About the Authors xv

Introduction xvii

CHAPTER 1 PL/SQL Concepts 1

LAB 1.1 PL/SQL in Client/Server Architecture 2

1.1.1 Use PL/SQL Anonymous Blocks 8

1.1.2 Understand How PL/SQL Gets Executed 10

LAB 1.2 PL/SQL in SQL*Plus 12

1.2.1 Use Substitution Variables 16

1.2.2 Use the DBMS_OUTPUT.PUT_LINE Statement 17

Chapter 1 Try It Yourself 19

CHAPTER 2 General Programming Language

Fundamentals 21

LAB 2.1 PL/SQL Programming Fundamentals 22

2.1.1 Make Use of PL/SQL Language Components 23

2.1.2 Make Use of PL/SQL Variables 24

2.1.3 Handle PL/SQL Reserved Words 26

2.1.4 Make Use of Identifiers in PL/SQL 27

2.1.5 Make Use of Anchored Datatypes 28

2.1.6 Declare and Initialize Variables 31

2.1.7 Understand the Scope of a Block, Nested Blocks, and Labels 34

Chapter 2 Try It Yourself 37

CHAPTER 3 SQL in PL/SQL 39

LAB 3.1 Making Use of DML in PL/SQL 40

3.1.1 Use the Select INTO Syntax for Variable Initialization 41

3.1.2 Use DML in a PL/SQL Block 42

3.1.3 Make Use of a Sequence in a PL/SQL Block 44

LAB 3.2 Making Use of SAVEPOINT 45

3.2.1 Make Use of COMMIT, ROLLBACK, and SAVEPOINT in a PL/SQL Block 48

Chapter 3 Try It Yourself 51

CHAPTER 4 Conditional Control: IF Statements 53

LAB 4.1 IF Statements 54

4.1.1 Use the IF-THEN Statement 58

4.1.2 Use the IF-THEN-ELSE Statement 62

LAB 4.2 ELSIF Statements 65

4.2.1 Use the ELSIF Statement 69

LAB 4.3 Nested IF Statements 74

4.3.1 Use Nested IF Statements 76

Chapter 4 Try It Yourself 80

CHAPTER 5 Conditional Control: CASE Statements 81

LAB 5.1 CASE Statements 82

5.1.1 Use the CASE Statement 89

5.1.2 Use the Searched CASE Statement 91

LAB 5.2 CASE Expressions 96

5.2.1 Use the CASE Expression 100

LAB 5.3 NULLIF and COALESCE Functions 103

5.3.1 The NULLIF Function 107

5.3.2 Use the COALESCE Function 109

Chapter 5 Try It Yourself 112

CHAPTER 6 Iterative Control: Part I 113

LAB 6.1 Simple Loops 114

6.1.1 Use Simple Loops with EXIT Conditions 118

6.1.2 Use Simple Loops with EXIT WHEN Conditions 120

LAB 6.2 WHILE Loops 124

6.2.1 Use WHILE Loops 128

LAB 6.3 Numeric FOR Loops 132

6.3.1 Use Numeric FOR Loops with the IN Option 137

6.3.2 Use Numeric FOR Loops with the REVERSE Option 139

Chapter 6 Try It Yourself 142

CHAPTER 7 Iterative Control: Part II 143

LAB 7.1 The CONTINUE Statement 144

7.1.1 Use the CONTINUE Statement 146

7.1.2 Use the CONTINUE WHEN Condition 152

LAB 7.2 Nested Loops 154

7.2.1 Use Nested Loops 157

Chapter 7 Try It Yourself 161

CHAPTER 8 Error Handling and Built-in Exceptions 163

LAB 8.1 Handling Errors 164

8.1.1 Understand the Importance of Error Handling 167

LAB 8.2 Built-in Exceptions 169

8.2.1 Use Built-in Exceptions 174

Chapter 8 Try It Yourself 178

CHAPTER 9 Exceptions 179

LAB 9.1 Exception Scope 180

9.1.1 Understand the Scope of an Exception 183

LAB 9.2 User-Defined Exceptions 188

9.2.1 Use User-Defined Exceptions 193

LAB 9.3 Exception Propagation 197

9.3.1 Understand How Exceptions Propagate 203

9.3.2 Reraise Exceptions 206

Chapter 9 Try It Yourself 209

CHAPTER 10 Exceptions: Advanced Concepts 211

LAB 10.1 RAISE_APPLICATION_ERROR 212

10.1.1 Use RAISE_APPLICATION_ERROR 215

LAB 10.2 EXCEPTION_INIT Pragma 217

10.2.1 USE the EXCEPTION_INIT Pragma 219

LAB 10.3 SQLCODE and SQLERRM 222

10.3.1 Use SQLCODE and SQLERRM 225

Chapter 10 Try It Yourself 227

CHAPTER 11 Introduction to Cursors 229

LAB 11.1 Cursor Manipulation 230

11.1.1 Make Use of Record Types 234

11.1.2 Process an Explicit Cursor 235

11.1.3 Make Use of Cursor Attributes 240

11.1.4 Put It All Together 242

LAB 11.2 Using Cursor FOR Loops and Nested Cursors 246

11.2.1 Use a Cursor FOR Loop 247

11.2.2 Process Nested Cursors 247

Chapter 11 Try It Yourself 252

CHAPTER 12 Advanced Cursors 253

LAB 12.1 Using Parameters with Cursors and Complex Nested Cursors 254

12.1.1 Use Parameters in a Cursor 255

12.1.2 Use Complex Nested Cursors 255

LAB 12.2 FOR UPDATE and WHERE CURRENT Cursors 258

12.2.1 For UPDATE and WHERE CURRENT Cursors 258

CHAPTER 13 Triggers 263

LAB 13.1 What Triggers Are 264

13.1.1 Understand What a Trigger Is 272

13.1.2 Use BEFORE and AFTER Triggers 274

LAB 13.2 Types of Triggers 277

13.2.1 Use Row and Statement Triggers 283

13.2.2 Use INSTEAD OF Triggers 285

Chaper 13 Try It Yourself 290

CHAPTER 14 Compound Triggers 291

LAB 14.1 Mutating Table Issues 292

14.1.1 Understand Mutating Tables 296

LAB 14.2 Compound Triggers 300

14.2.1 Understand Compound Triggers 306

Chapter 14 Try It Yourself 313

CHAPTER 15 Collections 315

LAB 15.1 PL/SQL Tables 316

15.1.1 Use Associative Arrays 326

15.1.2 Use Nested Tables 330

LAB 15.2 Varrays 334

15.2.1 Use Varrays 338

LAB 15.3 Multilevel Collections 342

15.3.1 Use Multilevel Collections 344

Chapter 15 Try It Yourself 348

CHAPTER 16 Records 349

LAB 16.1 Record Types 350

16.1.1 Use Table-Based and Cursor-Based Records 358

16.1.2 Use User-Defined Records 362

LAB 16.2 Nested Records 367

16.2.1 Use Nested Records 369

LAB 16.3 Collections of Records 373

16.3.1 Use Collections of Records 374

Chapter 16 Try It Yourself 378

CHAPTER 17 Native Dynamic SQL 379

LAB 17.1 EXECUTE IMMEDIATE Statements 380

17.1.1 Use the EXECUTE IMMEDIATE Statement 387

LAB 17.2 OPEN-FOR, FETCH, and CLOSE Statements 392

17.2.1 Use OPEN-FOR, FETCH, and CLOSE Statements 395

Chapter 17 Try It Yourself 401

CHAPTER 18 Bulk SQL 403

LAB 18.1 The FORALL Statement 404

18.1.1 Use the FORALL Statement 413

LAB 18.2 The BULK COLLECT Clause 422

18.2.1 Use the BULK COLLECT Statement 428

Chapter 18 Try It Yourself 437

CHAPTER 19 Procedures 439

LAB 19.1 Creating Procedures 441

19.1.1 Create Procedures 441

19.1.2 Query the Data Dictionary for Information on Procedures 443

LAB 19.2 Passing Parameters into and out of Procedures 444

19.2.1 Use IN and OUT Parameters with Procedures 445

Chapter 19 Try It Yourself 447

Part 1 447

Part 2 447

CHAPTER 20 Functions 449

LAB 20.1 Creating and Using Functions 450

20.1.1 Create Stored Functions 451

20.1.2 Make Use of Functions 452

20.1.3 Invoke Functions in SQL Statements 453

20.1.4 Write Complex Functions 454

Chapter 20 Try It Yourself 455

CHAPTER 21 Packages 457

LAB 21.1 The Benefits of Using Packages 458

21.1.1 Create Package Specifications 460

21.1.2 Create Package Bodies 462

21.1.3 Call Stored Packages 464

21.1.4 Create Private Objects 465

21.1.5 Create Package Variables and Cursors 469

LAB 21.2 Cursor Variables 471

21.2.1 Make Use of Cursor Variables 475

LAB 21.3 Extending the Package 480

21.3.1 Extend the Package 480

Chapter 21 Try It Yourself 493

CHAPTER 22 Stored Code 495

LAB 22.1 Gathering Information About Stored Code 496

22.1.1 Get Stored Code Information from the Data Dictionary 496

22.1.2 Enforce the Purity Level with the RESTRICT_REFERENCES Pragma 500

22.1.3 Overload Modules 506

Chapter 22 Try It Yourself 512

CHAPTER 23 Object Types in Oracle 513

LAB 23.1 Object Types 514

23.1.1 Use Object Types 522

23.1.2 Use Object Types with Collections 526

LAB 23.2 Object Type Methods 531

23.2.1 Use Object Type Methods 544

Chapter 23 Try It Yourself 554

CHAPTER 24 Oracle Supplied Packages 555

LAB 24.1 Making Use of Oracle Supplied Packages to Profile PL/SQL, Access Files, and Schedule Jobs 556

24.1.1 Access Files with UTL_FILE 563

24.1.2 Schedule Jobs with DBMS_JOB 563

24.1.3 Submit Jobs 564

LAB 24.2 Making Use of Oracle-Supplied Packages to Generate an Explain Plan and Create HTML Pages 568

24.2.1 Generate an Explain Plan with DBMS_XPLAN 572

LAB 24.3 Creating Web Pages with the Oracle Web Toolkit 578

24.3.1 Create an HTML Page with the Oracle Web Toolkit 594

APPENDIX A PL/SQL Formatting Guide 597

APPENDIX B Student Database Schema 601

APPENDIX C ANSI SQL Standards 607

APPENDIX D Answers to the Try It Yourself Sections 613

INDEX 705

Oracle PL/SQL by example 1 Contents 8 Acknowledgments 15 About the Authors 16 Introduction 18 CHAPTER 1 PL/SQL Concepts 30 LAB 1.1 PL/SQL in Client/Server Architecture 31 1.1.1 Use PL/SQL Anonymous Blocks 37 1.1.2 Understand How PL/SQL Gets Executed 39 LAB 1.2 PL/SQL in SQL*Plus 41 1.2.1 Use Substitution Variables 45 1.2.2 Use the DBMS_OUTPUT.PUT_LINE Statement 46 Chapter 1 Try It Yourself 48 CHAPTER 2 General Programming Language Fundamentals 50 LAB 2.1 PL/SQL Programming Fundamentals 51 2.1.1 Make Use of PL/SQL Language Components 52 2.1.2 Make Use of PL/SQL Variables 53 2.1.3 Handle PL/SQL Reserved Words 55 2.1.4 Make Use of Identifiers in PL/SQL 56 2.1.5 Make Use of Anchored Datatypes 57 2.1.6 Declare and Initialize Variables 60 2.1.7 Understand the Scope of a Block, Nested Blocks, and Labels 63 Chapter 2 Try It Yourself 66 CHAPTER 3 SQL in PL/SQL 68 LAB 3.1 Making Use of DML in PL/SQL 69 3.1.1 Use the Select INTO Syntax for Variable Initialization 70 3.1.2 Use DML in a PL/SQL Block 71 3.1.3 Make Use of a Sequence in a PL/SQL Block 73 LAB 3.2 Making Use of SAVEPOINT 74 3.2.1 Make Use of COMMIT, ROLLBACK, and SAVEPOINT in a PL/SQL Block 77 Chapter 3 Try It Yourself 80 CHAPTER 4 Conditional Control: IF Statements 82 LAB 4.1 IF Statements 83 4.1.1 Use the IF-THEN Statement 87 4.1.2 Use the IF-THEN-ELSE Statement 91 LAB 4.2 ELSIF Statements 94 4.2.1 Use the ELSIF Statement 98 LAB 4.3 Nested IF Statements 103 4.3.1 Use Nested IF Statements 105 Chapter 4 Try It Yourself 109 CHAPTER 5 Conditional Control: CASE Statements 110 LAB 5.1 CASE Statements 111 5.1.1 Use the CASE Statement 118 5.1.2 Use the Searched CASE Statement 120 LAB 5.2 CASE Expressions 125 5.2.1 Use the CASE Expression 129 LAB 5.3 NULLIF and COALESCE Functions 132 5.3.1 The NULLIF Function 136 5.3.2 Use the COALESCE Function 138 Chapter 5 Try It Yourself 141 CHAPTER 6 Iterative Control: Part I 142 LAB 6.1 Simple Loops 143 6.1.1 Use Simple Loops with EXIT Conditions 147 6.1.2 Use Simple Loops with EXIT WHEN Conditions 149 LAB 6.2 WHILE Loops 153 6.2.1 Use WHILE Loops 157 LAB 6.3 Numeric FOR Loops 161 6.3.1 Use Numeric FOR Loops with the IN Option 166 6.3.2 Use Numeric FOR Loops with the REVERSE Option 168 Chapter 6 Try It Yourself 171 CHAPTER 7 Iterative Control: Part II 172 LAB 7.1 The CONTINUE Statement 173 7.1.1 Use the CONTINUE Statement 175 7.1.2 Use the CONTINUE WHEN Condition 181 LAB 7.2 Nested Loops 183 7.2.1 Use Nested Loops 186 Chapter 7 Try It Yourself 190 CHAPTER 8 Error Handling and Built-in Exceptions 192 LAB 8.1 Handling Errors 193 8.1.1 Understand the Importance of Error Handling 196 LAB 8.2 Built-in Exceptions 198 8.2.1 Use Built-in Exceptions 203 Chapter 8 Try It Yourself 207 CHAPTER 9 Exceptions 208 LAB 9.1 Exception Scope 209 9.1.1 Understand the Scope of an Exception 212 LAB 9.2 User-Defined Exceptions 217 9.2.1 Use User-Defined Exceptions 222 LAB 9.3 Exception Propagation 226 9.3.1 Understand How Exceptions Propagate 232 9.3.2 Reraise Exceptions 235 Chapter 9 Try It Yourself 238 CHAPTER 10 Exceptions: Advanced Concepts 240 LAB 10.1 RAISE_APPLICATION_ERROR 241 10.1.1 Use RAISE_APPLICATION_ERROR 244 LAB 10.2 EXCEPTION_INIT Pragma 246 10.2.1 USE the EXCEPTION_INIT Pragma 248 LAB 10.3 SQLCODE and SQLERRM 251 10.3.1 Use SQLCODE and SQLERRM 254 Chapter 10 Try It Yourself 256 CHAPTER 11 Introduction to Cursors 258 LAB 11.1 Cursor Manipulation 259 11.1.1 Make Use of Record Types 263 11.1.2 Process an Explicit Cursor 264 11.1.3 Make Use of Cursor Attributes 269 11.1.4 Put It All Together 271 LAB 11.2 Using Cursor FOR Loops and Nested Cursors 275 11.2.1 Use a Cursor FOR Loop 276 11.2.2 Process Nested Cursors 276 Chapter 11 Try It Yourself 281 CHAPTER 12 Advanced Cursors 282 LAB 12.1 Using Parameters with Cursors and Complex Nested Cursors 283 12.1.1 Use Parameters in a Cursor 284 12.1.2 Use Complex Nested Cursors 284 LAB 12.2 FOR UPDATE and WHERE CURRENT Cursors 287 12.2.1 For UPDATE and WHERE CURRENT Cursors 287 CHAPTER 13 Triggers 292 LAB 13.1 What Triggers Are 293 13.1.1 Understand What a Trigger Is 301 13.1.2 Use BEFORE and AFTER Triggers 303 LAB 13.2 Types of Triggers 306 13.2.1 Use Row and Statement Triggers 312 13.2.2 Use INSTEAD OF Triggers 314 Chaper 13 Try It Yourself 319 CHAPTER 14 Compound Triggers 320 LAB 14.1 Mutating Table Issues 321 14.1.1 Understand Mutating Tables 325 LAB 14.2 Compound Triggers 329 14.2.1 Understand Compound Triggers 335 Chapter 14 Try It Yourself 342 CHAPTER 15 Collections 344 LAB 15.1 PL/SQL Tables 345 15.1.1 Use Associative Arrays 355 15.1.2 Use Nested Tables 359 LAB 15.2 Varrays 363 15.2.1 Use Varrays 367 LAB 15.3 Multilevel Collections 371 15.3.1 Use Multilevel Collections 373 Chapter 15 Try It Yourself 377 CHAPTER 16 Records 378 LAB 16.1 Record Types 379 16.1.1 Use Table-Based and Cursor-Based Records 387 16.1.2 Use User-Defined Records 391 LAB 16.2 Nested Records 396 16.2.1 Use Nested Records 398 LAB 16.3 Collections of Records 402 16.3.1 Use Collections of Records 403 Chapter 16 Try It Yourself 407 CHAPTER 17 Native Dynamic SQL 408 LAB 17.1 EXECUTE IMMEDIATE Statements 409 17.1.1 Use the EXECUTE IMMEDIATE Statement 416 LAB 17.2 OPEN-FOR, FETCH, and CLOSE Statements 421 17.2.1 Use OPEN-FOR, FETCH, and CLOSE Statements 424 Chapter 17 Try It Yourself 430 CHAPTER 18 Bulk SQL 432 LAB 18.1 The FORALL Statement 433 18.1.1 Use the FORALL Statement 442 LAB 18.2 The BULK COLLECT Clause 451 18.2.1 Use the BULK COLLECT Statement 457 Chapter 18 Try It Yourself 466 CHAPTER 19 Procedures 468 LAB 19.1 Creating Procedures 470 19.1.1 Create Procedures 470 19.1.2 Query the Data Dictionary for Information on Procedures 472 LAB 19.2 Passing Parameters into and out of Procedures 473 19.2.1 Use IN and OUT Parameters with Procedures 474 Chapter 19 Try It Yourself 476 Part 1 476 Part 2 476 CHAPTER 20 Functions 478 LAB 20.1 Creating and Using Functions 479 20.1.1 Create Stored Functions 480 20.1.2 Make Use of Functions 481 20.1.3 Invoke Functions in SQL Statements 482 20.1.4 Write Complex Functions 483 Chapter 20 Try It Yourself 484 CHAPTER 21 Packages 486 LAB 21.1 The Benefits of Using Packages 487 21.1.1 Create Package Specifications 489 21.1.2 Create Package Bodies 491 21.1.3 Call Stored Packages 493 21.1.4 Create Private Objects 494 21.1.5 Create Package Variables and Cursors 498 LAB 21.2 Cursor Variables 500 21.2.1 Make Use of Cursor Variables 504 LAB 21.3 Extending the Package 509 21.3.1 Extend the Package 509 Chapter 21 Try It Yourself 522 CHAPTER 22 Stored Code 524 LAB 22.1 Gathering Information About Stored Code 525 22.1.1 Get Stored Code Information from the Data Dictionary 525 22.1.2 Enforce the Purity Level with the RESTRICT_REFERENCES Pragma 529 22.1.3 Overload Modules 535 Chapter 22 Try It Yourself 541 CHAPTER 23 Object Types in Oracle 542 LAB 23.1 Object Types 543 23.1.1 Use Object Types 551 23.1.2 Use Object Types with Collections 555 LAB 23.2 Object Type Methods 560 23.2.1 Use Object Type Methods 573 Chapter 23 Try It Yourself 583 CHAPTER 24 Oracle Supplied Packages 584 LAB 24.1 Making Use of Oracle Supplied Packages to Profile PL/SQL, Access Files, and Schedule Jobs 585 24.1.1 Access Files with UTL_FILE 592 24.1.2 Schedule Jobs with DBMS_JOB 592 24.1.3 Submit Jobs 593 LAB 24.2 Making Use of Oracle-Supplied Packages to Generate an Explain Plan and Create HTML Pages 597 24.2.1 Generate an Explain Plan with DBMS_XPLAN 601 LAB 24.3 Creating Web Pages with the Oracle Web Toolkit 607 24.3.1 Create an HTML Page with the Oracle Web Toolkit 623 APPENDIX A: PL/SQL Formatting Guide 626 APPENDIX B: Student Database Schema 630 APPENDIX C: ANSI SQL Standards 636 APPENDIX D: Answers to the Try It Yourself Sections 642 INDEX 734 A 734 B 735 C 735 D 739 E 740 F 742 G 743 H 744 I 744 J-K 745 L 745 M 747 N 747 O 749 P 750 Q 752 R 752 S 753 T 756 U 758 V 758 W 759 X-Y-Z 759
دانلود کتاب Oracle PL/SQL by Example (4th Edition)