1. Trang chủ
  2. » Công Nghệ Thông Tin

a0010 advanced oracle pl sql programming with package morebook vn 9535

7 2 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Advanced Oracle PL/SQL Programming with Package Morebook VN 9535
Trường học Vietnam National University, Hanoi
Chuyên ngành Database Programming
Thể loại Lecture Notes
Thành phố Hanoi
Định dạng
Số trang 7
Dung lượng 56,33 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hugo Toledo, author of Oracle Networking, made many things possible for me over the past year, from helping me with the installation of Oracle Server 7.3 for Windows NT to directing me t

Trang 2

A Appendix: PL/SQL Exercises 2

A.1 Exercises 2

A.1.1 Conditional Logic 2

A.1.2 Loops 3

A.1.3 Exception Handling 6

A.1.4 Cursors 8

A.1.5 Builtin Functions 11

A.1.6 Builtin Packages 12

A.1.7 Modules 13

A.1.8 Module Evaluation: Foreign Key Lookup 14

17

A.2 Solutions 17

A.2.1 Conditional Logic 17

A.2.2 Loops 18

A.2.3 Exception Handling 20

A.2.4 Cursors 21

A.2.5 Builtin Functions 23

A.2.6 Builtin Packages 25

A.2.7 Modules 26

A.2.8 Module Evaluation: Foreign Key Lookup 28

1.2.1 The Iceberg Approach to Coding 31

1.2.2 The Client−Side Layers 32

32

1 PL/SQL Packages 34

1.1 What Is a PL/SQL Package? 34

35

1.2 What Are the Types and Layers of Packages? 35

37

1.3 What Are the Benefits of Packages? 37

1.3.1 Enforced Information Hiding 37

1.3.2 Object−Oriented Design 37

1.3.3 Top−Down Design 37

1.3.4 Object Persistence 37

1.3.5 Guaranteeing Transaction Integrity 38

1.3.6 Performance Improvement 38

40

1.4 Using Packages 40

1.4.1 The Package Specification 40

1.4.2 Referencing Package Elements 41

1.4.3 The Memory−Resident Architecture of Packages 42

1.4.4 Access to Package Elements 45

48

1.5 Types of Packages 48

1.5.1 Builtin Packages 48

1.5.2 Prebuilt Packages 50

1.5.3 Build−Your−Own Packages 50

51

1.6 Building Packages 51

1.6.1 When Should You Build a Package? 51

1.6.2 The Package Body 56

1.6.3 The Initialization Section 57

Trang 3

1.6.4 Working with Large Packages 60

1.6.5 Calling Packaged Functions in SQL 62

2.2.1 Choosing the Order of Elements 66

67

2 Best Practices for Packages 68

2.1 Starting With Packages 70

70

2.2 Using Effective Coding Style for Packages 72

74

2.3 Selecting Package Names 74

2.3.1 Choosing Appropriate and Accurate Names 74

2.3.2 Avoiding Redundancy 75

2.3.3 Avoiding Superfluous Naming Elements 76

78

2.4 Organizing Package Source Code 78

2.4.1 Creating Codependent Packages 79

81

2.5 Constructing the Optimal Interface to Your Package 81

2.5.1 Seeing Developers as Users 81

2.5.2 Making Your Programs Case−Insensitive 81

2.5.3 Avoiding Need for User to Know and Pass Literals 82

85

2.6 Building Flexibility Into Your Packages 85

2.6.1 Toggling Package Behavior 86

2.6.2 Toggles for Code Generation 87

2.6.3 Changing Package Behavior Without Changing the Application 88

91

2.7 Building Windows Into Your Packages 91

2.7.1 Centralizing the View Mechanism 92

2.7.2 Designing the Window Interface 92

2.7.3 Implementing the Window 94

2.7.4 Summarizing the Window Technique 95

97

2.8 Overloading for Smart Packages 97

2.8.1 When to Overload 97

2.8.2 Developing an Appreciation of Overloading 102

2.9.1 Implementing Overloading with Private Programs 103

2.9.2 Lava Lamp Code Consolidation 103

104

2.9 Modularizing for Maintainable Packages 107

110

2.10 Hiding Package Data 110

2.10.1 Gaining Control of Your Data 110

2.10.2 Tracing Variable Reads and Writes 112

2.10.3 Simplifying Package Interfaces 113

2.10.4 When to Make Data Public 114

2.10.5 Anchoring to Public Variables 115

3.8.1 When the num_in Argument Is 0 117

3.8.2 When string_in Is NULL 118

Trang 4

Not Found 119

119

3 The PL/SQL Development Spiral 122

3.1 The Basic Problem 122

124

3.2 Adding Value 124

126

3.3 Supplying Backward Compatibility 126

128

3.4 Improving the User Interface 128

130

3.5 Rough Waters Ahead 130

132

3.6 Building a Structured Function 132

135

3.7 Handling Program Assumptions 135

137

3.8 Broadening the Scope 137

139

3.9 Considering Implementation Options 139

141

3.10 Choosing the Best Performer 141

144

3.11 Don't Forget Backward Compatibility 144

145

3.12 Obliterating the Literals 145

148

3.13 Glancing Backward, Looking Upward 148

149

4 Getting Started with PL/Vision 150

4.1 What Is PL/Vision? 150

4.1.1 The Benefits of PL/Vision 150

4.1.2 The Origins of PL/Vision 151

153

4.2 PL/Vision Package Bundles 153

4.2.1 Building Blocks 153

4.2.2 Developer Utilities 154

4.2.3 Plug−and−Play Components 155

156

4.3 Installation Instructions 156

4.3.1 What's On the Disk? 156

4.3.2 Storage Requirements 156

4.3.3 Beginning the Installation 157

4.3.4 Using the PL/Vision Lite Online Reference 158

4.3.5 Creating the PL/Vision Packages 159

4.3.6 Granting Access to PL/Vision 160

162

4.4 Installing Online Help for PL/Vision 162

4.4.1 Special Handling for PLVdyn 162

4.4.2 A PL/Vision Initialization Script for SQL*Plus 163

Trang 5

4.4.3 Converting Scripts to PL/SQL Programs 163

4.4.4 A Warning About Partial Installation 164

4.4.5 Uninstalling PL/Vision 164

166

4.5 Using Online Help 166

4.5.1 Zooming in on help text 166

168

4.6 Summary of Files on Disk 168

4.6.1 Contents of the install Subdirectory 168

4.6.2 Contents of the test Subdirectory 168

4.6.3 Contents of the use Subdirectory 169

172

5 PL/Vision Package Specifications 173

5.1 Common Package Elements 173

175

5.2 p: a DBMS_OUTPUT Substitute 175

5.2.1 Toggling output from the p package 175

5.2.2 Setting the line separator 175

5.2.3 Setting the line prefix 175

5.2.4 The overloadings of the l procedure 175

177

5.3 PLV: Top−Level Constants and Functions 177

5.3.1 PL/Vision constants 177

5.3.2 Anchoring datatypes 177

5.3.3 Setting the date format mask 177

5.3.4 Setting the NULL substitution value 177

5.3.5 Assertion routines 178

5.3.6 Miscellaneous programs 178

180

5.4 PLVcase: PL/SQL Code Conversion 180

5.4.1 Package constants 180

5.4.2 Case−converting programs 180

182

5.5 PLVcat: PL/SQL Code Cataloguing 182

5.5.1 Cataloguing package contents 182

5.5.2 Identifying references in stored code 182

183

5.6 PLVchr: Operations on Single Characters 183

5.6.1 PLVchr constants 183

5.6.2 Character type functions 183

5.6.3 Other functions and procedures 184

185

5.7 PLVcmt: Commit Processing 185

5.7.1 Controlling commit activity 185

5.7.2 Logging commit activity 185

5.7.3 Performing commits 185

5.7.4 Managing the commit counter 185

187

5.8 PLVddd: DDL Syntax Dump 187

5.8.1 Including the schema 187

5.8.2 Including the storage parameter 187

Trang 6

This book is very much a product of my imagination, grounded in the realities and possibilities of the PL/SQL language Vague technical fantasies can be translated into packages only with a freedom of time and spirit Many people helped in many ways to provide me with this freedom

Bill Hinman, President and CEO of SSC, has supported me fully and encouraged me strenuously from the day

I joined his consulting company I am especially grateful for the weeks of straight writing time I was able to enjoy in the final stages of writing this book Barrie Hinman, CFO of SSC, has been invaluable in managing

the many details of our growing organization and my scattered activities Hugo Toledo, author of Oracle

Networking, made many things possible for me over the past year, from helping me with the installation of

Oracle Server 7.3 for Windows NT to directing me to the executable which made it possible to print my training materials in "pure black and white." Hugo is my "answer man" and he'll never understand how deeply

he is appreciated

My technical reviewers played a critical role in turning my many hundreds of pages of somewhat raw text into

a useful book (I hope) Brian Shelden of Symantec has been an enthusiastic booster and, much more

importantly, tester of my concepts and code Thomas Dunbar of WebCys again provided many excellent criticisms of my text and approach, forcing me to clarify concepts and justify techniques Bert Scalzo showed

an early and steady willingness to point out my mistakes which makes him a very valuable asset in my

technical life John Beresniewicz of Wynnsoft appeared late on the scene, but jumped in with both hands typing His ideas and experience have enriched both the text and my understanding of my own code Chuck Sisk of SSC was ready to take on whatever I asked of him even if that changed every week

Finally, there is David Thompson of SSC David is a meticulous, principled, and very smart Oracle developer Both in my first book and in this text, he went beyond critiquing my work to providing well thought−out additions to the text David built the PLVddd package, initially in a version independent of PL/Vision He then converted it to use the PL/Vision packages, a process that served as an excellent test of the usefulness and usability of my software

Many of my reviewers took time during their summer vacations to read my text, and for that I am deeply grateful

I thank Kasu Sista and Ken Wiegle of Links Technology, Inc., for their generosity in providing a development machine on which I could test PL/Vision code for Release 2.3 of PL/SQL at a critical stage in this book

I thank Petra Smulders of the European Oracle User Group, Lex de Haan of Oracle EMEA Education, and Ineke Werkman of Oracle Netherlands for their parts in my two wonderful trips to the Netherlands in 1996, where I trained Oracle developers and enjoyed Amsterdam

I thank Peter Vasterd of Oracle Corporation for keeping a wide line of communication open with me,

answering my sometimes, well, brainless questions, helping me get around technical and bureaucratic

obstacles, and specifically making sure that I was able to build and test my software on an Oracle Server 7.3 database

I thank Tom White and Steve Hilker of RevealNet for their enthusiastic support of my work and their help in making PL/Vision a living and breathing product

Trang 7

Informant, Kathleen O'Connor of Oracle Technical Journal, Rich Niemiec of Select Magazine, and the folks

at the Oracle Integrator Writing these articles helped me focus my thinking and coding in ways that clarified

the contents of this book

I thank Ernie Martinez and Mark A Ebel of COM.sortium LLC in Orlando for their help in sorting out my difficulties with UTL_FILE on my Windows NT Oracle 7.3 Server

I thank Fred King, most able, industrious, and downright amiable computer serviceperson, who went beyond the call of duty to cannibalize a "spare" Toshiba Portege in order to retrieve the text of this book from my dead laptop and keep me writing

I thank the good people at O'Reilly & Associates for another fine publishing experience I thank Debby Russell, my editor, for another outstanding effort at transforming lots of interesting ideas and too much text into a text of manageable size and cohesiveness I do not really understand how she manages to juggle all of her editing and book development responsibilities so effectively I do know, however, that this book stands as yet another testimony to her skill and dedication Thanks as well to David Futato, the production manager for the book; Kismet McDonoughưChan, the copyeditor; Mike Sierra, who converted the Microsoft Word files to FrameMaker; Edie Freedman, who designed the cover; Nancy Priest and Mary Jane Walsh, who designed the interior layout; Chris Reilley, who prepared the diagrams; Eden Reiner, who handled the advertising material; and Seth Maislin, who prepared the index

I thank my wife, Veva Silva Feuerstein, for taking on a biggerưthanưusual share (more than big enough to begin with) of "the family thing" and "the house thing" as I buried myself in my computers I am lucky to have her and I hope she feels the same way about me

I thank my son, Eli Silva Feuerstein, for never giving up on asking me to play with him, even as I was buried

in inches of paper doing final edits The games of horse and oneưonưone in our tiny backyard basketball court definitely improved the text you read in this book

I thank my son, Chris Silva, for helping us get away from our pets now and then, and for being such a fine big brother to Eli

I thank my Uncle Dave Gventer for making clear to me early in life that just because most people believe one thing, that doesn't make it true He opened my eyes to a different way of looking at the world

Finally, I thank my mother and father, Joan Lee and Sheldon Feuerstein, for their support and love

Copyright (c) 2000 O'Reilly Associates All rights reserved.

Ngày đăng: 03/12/2022, 22:15

TỪ KHÓA LIÊN QUAN

w