TOP TWENTY PL/SQL TIPS AND TECHNIQUES
|
|
|
- Erick Heath
- 10 years ago
- Views:
Transcription
1 TOP TWENTY PL/SQL TIPS AND TECHNIQUES STEVEN FEUERSTEIN Copyright 1996 Oracle User Resource, Inc. Adirondak Information Resources PL/SQL has come a long way since its rather simplistic beginnings as a batch-processing language for SQL*Plus scripts in the Oracle Version 6 database. Since PL/SQL Version 2 was first released, for example, Oracle Corporation has added dynamic SQL, RDBMS-based job scheduling, file I/O, and cursor variables. PL/SQL is now a mature, advanced programming language packed with features and capabilities and one of the most significant enabling technologies in the Oracle universe of products. PL/SQL has also become a much more complicated and complex language. There is so much more for all of us to understand and, eventually, master. At the same time, the demands on our expertise and productivity increase steadily. As a result, there has never been a better time to pick up some tips for improving our PL/SQL programming skills. This article offers twenty of my favorite tips (organized into categories) for writing PL/SQL code which has fewer bugs, is more easily maintained, and takes advantage of some of the most powerful features of PL/SQL. Stepping back from the details, however, these suggestions generally express the following good advice: Use structured methodology. You may not be coding in Cobol, but the same principles of design which worked for 3GLs work just as well with PL/SQL. Don't throw away the baby with the bathwater! Methodologies developed over the past thirty years hold their legitimacy even with the nonprocedural environments like Oracle Developer Use common sense. Steven is the author of ORACLE PL/SQL Programming (O Reilly, 1995) and Advanced ORACLE PL/SQL: Programming with Packages (O Reilly, 1996). He is Director of the Oracle Practice for SSC, a systems management consulting firm based in Chicago ( Steven is also a Senior Technology Officer for RevealNet and co-author of the Reveal for PL/SQL knowledge server ( Steven won the Outstanding Speaker Award at ECO 96. At the end of many of my presentations on PL/SQL, people will come up to me and say: "But everything you said was just common sense!" I agree wholeheartedly. Certainly PL/SQL breaks some new ground (for many of us) with features like packages, PL/SQL tables, and cursor variables. Most of our time is, however, spent coding the same old IF statements, loops and so forth. We shouldn't have to be reminded to avoid hard-coding literals, to name identifiers to reflect their purpose, to use consistent indentation, to avoid side-effects in functions. Do it right the first time. I have got to be the worst offender of this advice. I fit the classic hacker profile, impatiently chomping at the bit to get in there and code. Hold yourself back! Do the analysis up front so that you understand the requirements fully. Think through the implementation approach you will take. Uncover the pitfalls before you start coding. And when you start debugging, don't "try" things. Analyze the problem and craft a solution you can prove will solve the difficulty. You will always end up being more productive if you take the time to do it right the first time around. ECO '96 Real World Client/Server
2 Make full use of the appropriate, provided features of the programming language. I don't think there is a single person in this world (including members of the PL/SQL development team) who truly knows about every single feature of the PL/SQL language, especially if you include all of the package-based extensions. Yet the more you know, the more you can use to your advantage in your programs. Make sure you remain current with the ever-flowing releases of PL/SQL. Take the time to familiarize yourself with new features so that you can fully leverage the capabilities of PL/SQL. Effective Coding Strategies 1. Use UPPER-lower case method to make code more readable. PL/SQL code is made up of many different components: PL/SQL data structures such as PL/SQL tables, bind variables like Oracle Forms items, procedures, functions, loops, declarations, control constructs, etc. All of these elements break down roughly into two types of text: reserved words and application-specific identifiers. The PL/SQL compiler treats these two kinds of text very differently. You can improve the readability of your code greatly by reflecting this difference in the way the text is displayed. I employ the following UPPER-lower rule to highlight the distinction: Enter all reserved words in UPPERCASE and all application identifiers in lowercase. Using a consistent mixture of upper- and lowercase words increases the readability of your code by giving a sense of dimension to the code. The eye can more easily cruise over the text and pick the different syntactical elements of each statement. The uppercase words act as signposts directing the activity in the code. You can focus quickly on the lowercase words for the application-specific content. There are other widely-used standards for use of case in programming, most notably the Visual Basic style of UsingInitCapInLongNames. Whichever you approach you take, make sure it aids in readability -- and use it consistently! 2. Use consistent indentation. You should use indentation -- in a ruthlessly consistent manner -- to reflect the logical structure of your program. All of the following statements should cause indentation to another "level": IF statements, loops, sections of PL/SQL Block, and exception handlers. Watch out for indentations which are too short to differentiate and too long to hold together related statements. I recommend an indentation of three spaces. 3. Avoid hard-coded literals of any kind in your programs. Every application has its own set of special or "magic" values. These values might be configuration parameters or user information. They are constants throughout the application -- but that doesn't mean they never change. In fact, such values will almost always change eventually. To avoid getting burned by literals which have been littered throughout your code, follow these guidelines: Remove all literals (within reason) from your code. Instead, declare constants which hold those literal values. 4. Make sure your name describes the module accurately. A name can make a big difference in the usability of your variables, modules and parameters. Your names should improve the self-documenting nature of your code. Follow these guidelines for procedures and functions: A procedure is an executable statement, a command to the PL/SQL compiler. Consequently, the grammar of the procedure name should be similar to a command: Verb_Subject. A function is used like an expression in an executable statement. It returns or "represents" a value, so the grammar of a function name should be a noun: Description_of_Returned_Value. 5. Test all of your assumptions as you debug your code. Obvious, is it? Most of the time we aren't even aware of all the assumptions we make about our programs and the environment. I have often wasted hours trying to find the source of a problem because I muttered to myself "All right, I know that the value of that variable is set..." or something like that. And after I have tested everything else, I will finally say "Oh, what the heck! Might as check that variable." And lo and behold, that was my problem. Don't assume anything. Test everything ECO '96 Real World Client/Server
3 Data Structures 6. Use anchored declarations whenever possible. You can use the %TYPE and %ROWTYPE declaration attributes to anchor the datatype of one variable to that of a previously-existing variable or data structure. The anchoring data structure can be a column in a database table, the entire table itself, a programmer-defined record or a local PL/SQL variable. In the following example I declare a local variable with the same structure as the company name: my_company company.name%type; In this second example I declare a record based on a cursor's structure: CURSOR company_cur SELECT company_id, name, incorp_date FROM company; company_rec company_cur%rowtype; Anchored types offer the following benefits: 1. Synchronization with database columns. Many PL/SQL variables "represent" database information inside the program. By using %TYPE, I am guaranteed that the local variable's data structure matches that in the database. If I instead hard-coded my declaration, the program could get "out of synch" with my data dictionary and generate errors. For example, if the previous declaration had declare my_company as VARCHAR2(30) and then I expanded the column size in the table to 60, my program is likely to cause VALUE_ERROR exceptions. 2. Normalization of local variables. You use PL/SQL variables to store calculated values used throughout the application. You can use %TYPE to base all declarations of these variables against a single, centralized variable datatype. If you need to modify that datatype, perhaps to expand the maximum size of a number to reflect higher revenue, you only need to change that single declaration. All anchored declarations will then pick up the new constraint when the programs are recompiled. 7. Streamline your code with records. PL/SQL lets you create composite structures called records which can mimic the structure of a database table and a cursor. You can also define your own record structures with the record TYPE statement. Records offer the following benefits: Write less code: instead of declaring, assigning and referencing individual variables, you can work the record as a whole. Protect your code from changes in database structures. Cursor and table records automatically adapt to the definitions of the columns in the underlying query. Consider the program shown below. I wrote in while sitting in a coach airline seat. There was very little room to maneuver and so I wanted to minimize my typing. I was also unfamiliar with the details of the data structures, such as column names and datatypes. As a result, I worked almost exclusively with records and was able to focus on the logical structure of the program. I filled in the details when back on the ground. FOR imp_rec IN imp_cur LOOP /* Remove after compiles successfully! */ IF imp_cur%rowcount > &1 THEN RETURN; END IF; IF NVL (imp_rec.prft_ovrd_seq_nu, 0) = 0 THEN get_site_prof_data (imp_rec, li_rec); ELSE get_provrd_data (imp_rec, li_rec); END IF; insert_line_001 (li_rec); insert_line_062 (li_rec); IF duplicate_pl_site (imp_rec) THEN create_new_override (imp_rec, li_rec, dup_count, new_pl_seq_nu); END IF; END LOOP; ECO '96 Real World Client/Server 3
4 8. Optimize foreign key lookups with PL/SQL tables. Given the normalized nature of our databases, you will have to perform many foreign key lookups (given this key, get the entity's name) in your screens and reports. You can use PL/SQL tables to cache already-retrieved values and thereby avoid repetitive SQL access. This will speed up your programs. You build the PL/SQL table incrementally with each query against the database. On subsequent calls, however, you check the table first and use that value. Here is the pseudo-code which describes the logical flow behind this approach: 1 FUNCTION company_name 2 (id_in IN company.company_id%type) 3 RETURN VARCHAR get-data-from-table; 7 return-company-name; 8 EXCEPTION 9 WHEN NO_DATA_FOUND 10 THEN 11 get-data-from-database-table; 12 store-in-pl/sql-table; 13 return-company-name; Use Booleans to improve readability. You can use Boolean variables and functions to greatly improve the readability of your programs. When you have complex Boolean expressions in IF statements and loops (the WHILE loop condition and the simple loop's EXIT statement), hide that complexity behind either a local PL/SQL variable or a call to a Boolean function. The name of the variable/function will state clearly a summation of all the complex logic. You can also more easily re-use that logic by hiding behind this kind of interface. To get a feel for the improvement, compare the following two IF statements. In the first conditional statement, a raise is triggered by a complex series of Boolean expressions. It is hard to make sense of this logic and, even worse, it exposes the formula directly in this code. What if the business rule changes? IF total_sal BETWEEN AND AND emp_status (emp_rec.empno) = N AND (MONTHS_BETWEEN (emp_rec.hiredate, SYSDATE) > 10) THEN give_raise (emp_rec.empno); END IF; In this second IF statement, the details are hidden behind the eligible_for_raise function. As a result, the code is more readable and the business rule is encapsulated within the module. IF eligible_for_raise (emp_rec.empno) THEN give_raise (emp_rec.empno); END IF; Built-in Functions and Packages 10. Leverage fully the built-in functions. PL/SQL offers dozens of built-in functions to help you get your job done with the minimum amount of code and fuss possible. Some of them are straightforward, such as the LENGTH function, which returns the length of the specified string. Others offer subtle variations which will aid you greatly -- but only when you are aware of those variations. Two of my favorites in this category of hidden talents are INSTR and SUBSTR, both character functions. SUBSTR returns a sub-portion of a string. Most developers only use these functions to search forward through the strings. By passing a negative starting location, however, SUBSTR will count from the end of the string. The following expression returns the last character in a string: SUBSTR (my_string, -1, 1) INSTR returns the position in a string where a substring is found. INSTR will actually scan in reverse through the string for the Nth occurrence of a substring ECO '96 Real World Client/Server
5 In addition, you can easily use INSTR to count the number of times a substring occurs in a string, using a loop of the following nature: LOOP substring_loc := INSTR (string_in, substring_in, 1, return_value); /* Terminate loop when no more occurrences are found. */ EXIT WHEN substring_loc = 0; /* Found match, so add to total and continue. */ return_value := return_value + 1; END LOOP; RETURN return_value - 1; 11.Get familiar with the new built-in packages. In addition to the many built-in functions provided by PL/SQL, Oracle Corporation also offers many built-in packages. These packages of functions, procedures and data structures greatly expand the scope of the PL/SQL language. It is no longer sufficient for a developer to become comfortable simply with the basic PL/SQL functions like TO_CHAR and ROUND and so forth. Those functions have now become only the inner-most layer of useful functionality. Oracle Corporation has built upon those functions, and you should do the same thing. Just to give you a taste of what the built-in packages offer consider the following possiblities: DBMS_UTILITY.GET_TIME Function DBMS_OUTPUT.PUT_LINE Procedure Display information to the screen from within your PL/SQL program. Use for debugging, for linking World Wide Web Home Pages to Oracle, etc. DBMS_JOB.SUBMIT Procedure Submit a job for scheduled execution by the Oracle Server. (PL/SQL Release 2.1 and above) UTL_FILE.GET_LINE Procedure Read a line of text from an operating system file. And use the PUT_LINE procedure to write text back out to a file. (PL/SQL Release 2.3 only) The possibilities and capabilities aren't quite endless, but they are getting there! With each new release of the Oracle Server, we get new packages with which to improve our own programs. Loops 12. Take advantage of the cursor FOR loop. The cursor FOR loop is one of my favorite PL/SQL constructs. It leverages fully the tight and effective integration of the procedural aspects of the language with the power of the SQL database language. It reduces the volume of code you need to write to fetch data from a cursor. It greatly lessens the chance of introducing loop errors in your programming Ñ and loops are one of the more error-prone parts of a program. Does this loop sound too good to be true? Well, it isn't Ñ it's all true! Returns the ealpsed time in 100ths of seconds since an arbitrary time. You can use it to measure subsecond response time -- and also analyze the impact of your coding practices on application performance. DBMS_LOCK.SLEEP Procedure Blocks the current program from continuing execution for the specified number of seconds. ECO '96 Real World Client/Server 5
6 Suppose I need to update the bills for all pets staying in my pet hotel, the Share-a-Din-Din Inn. The example below contains an anonymous block that uses a cursor, occupancy_cur, to select the room number and pet ID number for all occupants at the Inn. The procedure update_bill adds any new changes to that pet's room charges. 1 DECLARE 2 CURSOR occupancy_cur 3 SELECT pet_id, room_number 4 FROM occupancy WHERE occupied_dt = SYSDATE; 5 occupancy_rec occupancy_cur%rowtype; 6 7 OPEN occupancy_cur; 8 LOOP 9 FETCH occupancy_cur INTO occupancy_rec; 10 EXIT WHEN occupancy_cur%notfound; 11 update_bill 12 (occupancy_rec.pet_id, occupancy_rec.room_number); 13 END LOOP; 14 CLOSE occupancy_cur; 15 This code leaves nothing to the imagination. In addition to defining the cursor (line 2), you must explicitly declare the record for the cursor (line 5), open the cursor (line 7), start up an infinite loop, fetch a row from the cursor set into the record (line 9), check for an end-ofdata condition with the cursor attribute (line 10), and finally perform the update. When you are all done, you have to remember to close the cursor (line 14). If I convert this PL/SQL block to use a cursor FOR loop, then I all I have is: Here you see the beautiful simplicity of the cursor FOR loop! Gone is the declaration of the record. Gone are the OPEN, FETCH, and CLOSE statements. Gone is need to check the %FOUND attribute. Gone are the worries of getting everything right. Instead, you say to PL/SQL, in effect:: ÒYou and I both know that I want each row and I want to dump that row into a record that matches the cursor. Take care of that for me, will you?" And PL/SQL does take care of it, just the way any modern programming language integrated with SQL should. 13. Don't declare your FOR loop index. Whether you use a numeric or cursor FOR loop, the loop index is declared for you and implicitly by PL/SQL. If you do declare a variable with the same name as the loop index, that will be a different variable. It will not be used by the loop and will likely introduce bugs into your program. Consider, for example, the anonymous block below. Even if I am the only person stored in the emp table, I will never get a raise! DECLARE CURSOR emp_cur SELECT empno, ename FROM emp; emp_rec emp_cur%rowtype; FOR emp_rec IN emp_cur LOOP display_emp (emp_rec.ename); END LOOP; IF emp_rec.ename = FEUERSTEIN THEN give_raise (emp_rec.empno, ); END IF; DECLARE CURSOR occupancy_cur SELECT pet_id, room_number FROM occupancy WHERE occupied_dt = SYSDATE; FOR occupancy_rec IN occupancy_cur LOOP update_bill (occupancy_rec.pet_id, occupancy_rec.room_number); END LOOP; ECO '96 Real World Client/Server
7 14. Avoid unstructured exits from loops. You should follow these guidelines for terminating a loop: Let a FOR loop complete its specified number of iterations. Do not use an EXIT statement to leave prematurely. Always make sure you include an EXIT statement within a simple loop. Never use EXIT to leave a WHILE loop. Do not issue RETURNs directly from within a loop. Modular Code 15. Construct abstract data types with PL/SQL packages. The term "abstract data type" is about as dry and technicalsounding as you can get. Yet the concept of an abstract data type, or ADT, is something we apply -- or should apply -- in every single one of our application efforts, sometimes without even realizing that we are doing it. An abstract data type is a collection of information and operations which act on that information. When you create an ADT, you work with objects as opposed to variables, columns, and other computer-science items. You perform an abstraction from the implementation details to the "thing in itself" and work on a higher level. In PL/SQL, this is best done with a package. To give you a feel for the ADT, consider the following "before and after" examples of a thermometer implemented in Oracle Forms. The "before" shows how to manage the thermometer as a sequence of separate statements. The "after" shows the interface provided by the progress package. 1. Set the thermometer to 20% completion. Before: :B_PROGRESS.PERCENT_DONE := '20 % Complete.'; :B_PROGRESS.THERMOMETER := 'nn'; SHOW_VIEW ('cv_progress'); SYNCHRONIZE; After: progress.bar (20, 2); 2. Hide the progress box when the program completed and control was returned back to the user. Before: HIDE_VIEW ('cv_progress'); SET_WINDOW_PROPERTY ('PROGRESS_WINDOW', VIBLE, PROPERTY_OFF); SYNCHRONIZE; After: progress.hide; By treating the progress box as an object with rules governing its use and appearance, I can reduce greatly the volume of code required. The resulting statements are also easier to understand and maintain. Here are some guidelines you should follow when designing an ADT: 1. Maintain a consistent level of abstraction. This is probably the most important aspect of your ADT implementation. All the modules you build to represent your abstract data structure should operate with the same level of data. 2. Provide a comprehensive interface to the abstract data type. Make sure that the user (a programmer, in this case) can perform all necessary operations on the ADT without having to go around the interface you build to the ADT. Hide all the implementational details of your ADT behind calls to procedures and modules -- without exception. ECO '96 Real World Client/Server 7
8 3. Use the package structure, the most natural repository for ADT code. The ADT represents a thing by presenting a layer of code which allows you to perform operations on that thing as a whole, rather than its individual components. The package joins related objects together and so corresponds closely to the ADT. The package clearly distinguishes between the public and private parts of the code. The public objects make up the interface to the ADT. The private objects contain and hide the implementational details for the ADT. 16. Enhance scope control with nested blocks. PROCEDURE delete_details DELETE FROM child1 WHERE...; EXCEPTION WHEN OTHERS THEN NULL; DELETE FROM child2 WHERE...; EXCEPTION WHEN OTHERS THEN NULL; I can in this way use my nested blocks to allow my PL/SQL program to continue past exceptions. 17. Overload modules to make your software smarter. Within a package and within the declaration section of a PL/SQL block, you can define more than module with the same name! The name is, in other words, overloaded. In the following example, I have overloaded the value_ok function in the body of my check package, which is used to validate or check values used in my application: PACKAGE BODY check /* First version takes a DATE parameter. */ FUNCTION value_ok (date_in IN DATE) RETURN BOOLEAN RETURN date_in <= SYSDATE; /* Second version takes a NUMBER parameter. */ FUNCTION value_ok (number_in IN NUMBER) RETURN BOOLEAN RETURN number_in > 0; Now I can put both versions of value_ok to work in my code as follows: IF check.value_ok (hiredate) AND check.value_ok (salary) THEN... END IF; I have found overloading to be extremely useful when I am building a layer of code which will be used by other developers (my PL/SQL toolbox). I use module overloading to hide complexities of the programmatic interface from my users (other programmers). Instead of having to know the six different names of procedures used to, for example, display various kinds of data, a developer can rely on a single module name. In this fashion, overloading transfers the burden of knowledge from the developer to the software. 18. Use local modules to reduce code volume and improve readability. A local module is a procedure or function which is defined in the declaration section of a PL/SQL block (anonymous or named). This module is considered local because it is only defined within the parent PL/SQL block. It cannot be called by any other PL/SQL blocks defined outside of that enclosing block ECO '96 Real World Client/Server
9 There are two key reasons to create local modules: Reduce the size of the module by stripping it of repetitive code. This is the most common motivation to create a local module. The code reduction leads to higher-quality code since you have fewer lines to test and fewer potential bugs. It takes less effort to maintain the code, since there is simply less to maintain. When you do have to make a change, you make it in one place in the local module and the effects are felt immediately throughout the parent module. Improve the readability of your code. Even if you do not repeat sections of code within a module, you still may want to pull out a set of related statements and package them into a local module to make it easier to follow the logic of the main body of the parent module. Consider the following example, in which I calculate the net present value for various categories and then format the result for display purposes. PROCEDURE display_values (proj_sales_in IN NUMBER, year_in IN INTEGER) DBMS_OUTPUT.PUT_LINE ('Total Sales: ' TO_CHAR((npv ('total_sales', year_in) / proj_sales_in * 100),'999.99')); DBMS_OUTPUT.PUT_LINE ('Employee Labor: ' TO_CHAR((npv ('labor_costs', year_in) / proj_sales_in * 100),'999.99')); In this approach, I have exposed the way I perform the calculation and formatting. As a result, whenever a change is required (different display format, different formula, etc.) I must upgrade each distinct calculation. If, on the other hand, I hide the calculation behind the interface of a callable module, then the calculation is coded only once.with the help of a local module, the display_values procedure is transformed as shown below. PROCEDURE display_values (proj_sales_in IN NUMBER, year_in IN INTEGER) /* Local Module */ PROCEDURE display_npv (column_in IN VARCHAR2) DBMS_OUTPUT.PUT_LINE (INITCAP (REPLACE (column_in, '_', ' ')) ': ' TO_CHAR((npv (column_in, year_in) / proj_sales_in * 100), '999.99')); display_npv ('total_cost'); display_npv ('employee_labor'); I have found that few developers are aware of the ability to create local modules. I have also found that modules-within-a-module play an important role in allowing me to write well-structured, even elegant programs. Take a look at any of your more complex programs and I guarantee you will quickly identify segments of the code which would serve you better bundled into a local module. 19. Code a single RETURN for successful function execution. The sole purpose of a function should be to return a single value (this could be a PL/SQL table or other composite structure, of course). To reinforce this singlemindedness, you should code your function so that it has only one RETURN statement. This RETURN should also be the last statement in the function. I use the following template to achieve this effect: FUNCTION fname () RETURN datatype return_value datatype; RETURN return_value; END fname; ECO '96 Real World Client/Server 9
10 20. Use Self-identifying Parameters (Avoid Boolean Values) A common parameter for a module is a flag which relies on two-valued logic (TRUE or FALSE) to pass information to the module. The temptation in such a case is to declare the parameter to be type Boolean (or to simulate a Boolean with a VARCHAR2 'Y' or 'N' value). With this approach, when you call the program, you will pass either TRUE or FALSE. You will find in these circumstances that while the specification for your program is very readable, the way you call it in other programs will be difficult to understand. Consider the parameters for the following procedure, which is used to generate reports. It offers flags to control report printing and file clean-up. PROCEDURE gen_report (report_id_in IN NUMBER, clean_up_in IN BOOLEAN, print_in IN VARCHAR2); In order to make gen_report more flexible, the developer has provided two flag parameters: clean_up_in print_in TRUE if the procedure should clean up log files, FALSE to keep the files in place, usually for purposes of debugging. Pass 'Y' if the output file of the report should be printed, 'N' to skip the print step. When one glances over the procedure's specification, the purpose and usage of each parameter seems clear enough. But take a look at how I would call this procedure: gen_report (report_id, TRUE, 'Y'); As you can see, these arguments are not very descriptive. Without the context provided by their names, actual Boolean parameters cannot "selfdocument" their effect. A maintainer of the code must go back to the source to understand the impact of a particular value. That defeats completely the information hiding principle of modular programming. A much better approach replaces Boolean and pseudo- Boolean parameters with character parameters whose acceptable values are descriptions of the action or situation. With this change, a call to gen_report states clearly its intentions: gen_report (report_id, 'CLEANUP', 'PRINT'); or: gen_report (report_id, 'NO_CLEANUP', 'PRINT'); As you can see from these examples, I write my procedures to accept an unambiguous affirmative value ("CLEANUP") and the most clearly-defined negative form ("NO_CLEANUP"). One complication to this style is that you need to validate the parameter values; if you were using a Boolean, the strong datatyping in PL/SQL would guarantee that a legal value is passed. An even better solution than either of these approaches is to use constants which are stored in a package. In this way, you avoid hard-coding values, get compile-time verification of correctness and make your code more readable. The package might look like this: PACKAGE vals c_print CONSTANT VARCHAR2(5) := print ; c_noprint CONSTANT VARCHAR2(7) := noprint ; c_cleanup CONSTANT VARCHAR2(5) := cleanup ; c_nocleanup CONSTANT VARCHAR2(7) := nocleanup ; END vals; And the calls to gen_report would now look like this: gen_report (report_id, vals.c_clean, vals.c_print); This paper should provide you with lots of ideas on how to improve your code. Of course, it is just a tip (no pun intended) of the iceberg of features and functionality in the PL/SQL language. Oracle PL/SQL Programming, published by O'Reilly and Associates, explores all of the tips in this article, plus many, many more, in almost overwhelming detail. If you have any questions, you can reach me at my Compuserve address: 72053, ECO '96 Real World Client/Server
11 ALL-STAR Training L E A R N I N G F R O M T H E B E S T Registration Fee for Both Days January 30 & 31 Registration Fee for One Day Only January 30 or January 31 (Web Server Training & Designer/2000 Methods and Methodology are 2-day classes) User Group Member Non-User Group Member User Group Member Non-User Group Member Registration Please print clearly! NAME: COMPANY: ADDRESS: CITY: STATE/PROVINCE: ZIP/POSTAL CODE: COUNTRY: TELEPHONE: FAX: ADDRESS: (CLASS SIZE LIMITED. DON T DELAY.) ( ) FEE PER PERSON User Group Affiliations: Participants paying for both days of the training classes should choose one class for each day. Participants paying for only one day should make one selection for the day they plan to attend. Participants selecting Developing Applications Using Oracle WebServer or Designer/2000 Methods and Methodology will receive two days of training. (This class will be your only training class selection). Thursday and Friday, January 30 and 31, 1997 THESE ARE TWO-DAY CLASSES Developing Applications Using Oracle WebServer Jeff Bernknopf Designer/2000 Methods and Methodology Paul Dorsey and Peter Koletzke Thursday, January 30, 1997 THESE ARE ONE-DAY CLASSES Best Practices and Advanced Techniques in PL/SQL Steven Advanced Techniques for Oracle7 Database Administration Noorali Sonawalla Friday, January 31, 1997 THESE ARE ONE-DAY CLASSES Leveraging PL/SQL Packages Steven Generating WebServer Applications from Designer/2000 Paul Rodgers Multidimensional Modeling and Designing a Data Warehouse Mark Whitney On-Site Registration is $300 per day for ALL participants. (both members and non-members) All-Star Training Cancellation Refund Policy: Cancellations must be received prior to January 27, 1997, for a full refund less $100. If you don t cancel and don t attend, no refunds will be given. Payment Method Payment must accompany this form. Payment may be made by check (payable to Oracle User Resource), purchase order, or credit card authorization. Check/Money Order (U.S. Dollars only) Purchase Order # Credit Card: AMEX Visa MasterCard Card # Billing Zip Code Exp. mm/yy: / CARD HOLDER S SIGNATURE PRINT CARD HOLDER S NAME AS IT APPEARS ON CARD MAIL PAYMENT TO: ECO S.College Road Wilmington, NC Phone: (910) Fax: (910) @compuserve.com $ 450 $ 475 $ 225 $ 250 Please make a copy of this form and submit a completed form for each individual
12 Boston Park Plaza Hotel Boston Massachusetts PLEASE TYPE OR PRINT CLEARLY NAME: (FIRST) (LAST) COMPANY: ADDRESS: CITY: STATE/PROVINCE: ZIP/POSTAL CODE: COUNTRY: ADDRESS: TELEPHONE: FAX: CONFERENCE REGTRATION Full payment must be included with all registrations to obtain advance prices. Payment may be made by check (payable to Oracle User Resource, Inc.), purchase order, or credit card authorization. All participants are guaranteed a Proceedings Book upon check-in; however, we cannot guarantee additional conference materials and giveaways to those registering after March 3, Conference Cancellation Refund Policy Full conference fee will be charged for all reserved space. A full refund less $100 will be given to all cancellations requested in writing and received on or before March 3, After March 3, 1997, no refunds will be given. Advance registration User Group Member fee (received on or before March 3,1997) Non-User Group Member Late registration fee User Group Member (received after March 3,1997) Non-User Group Member TOTAL APRIL 6-9, 1997 FEE PER PERSON $ Please make a copy of this form and submit a completed form for each individual. Level Of Expertise Introductory Intermediate Advanced User Group Affiliation How many ECO Conferences have you attended in the past? PAYMENT METHOD Check/Money Order (U.S. Dollars only) Purchase Order # Credit Card: Visa MasterCard CARD # EXP. MM/YY: /_BILLING ZIP CODE: CARD HOLDER S SIGNATURE PRINT CARD HOLDER S NAME AS IT APPEARS ON CARD. Please make checks payable to Oracle User Resource, Inc South College Road Wilmington, NC Call: (910) Fax: (910) @compuserve.com Web address: PAYMENT MUST ACCOMPANY TH FORM. ( ) ECO 97 s theme, Putting Oracle to Work, emphasizes Oracle7 on the Web, Data Warehousing, Applications Development, and Oracle Performance Tuning. ECO continues to provide the best in-depth, technical sessions for applications developers and DBAs. Oracle users responsible for building and maintaining enterprise-wide business critical applications and databases need ECO 97. need. Every year ECO gets better because we take our participants comments seriously and work to give them the technical conference that they want and participants said: NO GENERAL SESSIONS! r esult: THEY RE GONE! More technical sessions than ever participants said: GIVE US MORE UNCONTESTED TIME WITH VENDORS! r esult: ANOTHER INNOVATION: The Corporate Campground with technical demonstrations and dedicated conference time participants said: DESIGNER/2000 BECOMING MORE IMPORTANT TO OUR APPLICATIONS DEVELOPMENT. r esult: INCORPORATE CASE DAY INTO ECO 97 Gives attendees more value. participants said: IT S HARD TO KEEP UP WITH ORACLE S NEW TECHNOLOGY. r esult: MINI-LESSON TRACK INTRODUCTORY TRACK FOR NEW TECHNOLOGIES ADDITIONAL HALF-DAY OF QUICK START TRAINING bottom line: ECO LTENS!
Oracle PL/SQL Best Practices
Achieving PL/SQL Excellence Oracle PL/SQL Best Practices Steven Feuerstein Me - www.stevenfeuerstein.com PL/Solutions - www.plsolutions.com RevealNet - www.revealnet.com 7/5/99 Copyright 1999 Steven Feuerstein
Database Programming with PL/SQL: Learning Objectives
Database Programming with PL/SQL: Learning Objectives This course covers PL/SQL, a procedural language extension to SQL. Through an innovative project-based approach, students learn procedural logic constructs
Duration Vendor Audience 5 Days Oracle Developers, Technical Consultants, Database Administrators and System Analysts
D80186GC10 Oracle Database: Program with Summary Duration Vendor Audience 5 Days Oracle Developers, Technical Consultants, Database Administrators and System Analysts Level Professional Technology Oracle
Oracle Database: SQL and PL/SQL Fundamentals
Oracle University Contact Us: 1.800.529.0165 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This course is designed to deliver the fundamentals of SQL and PL/SQL along
Oracle Database: SQL and PL/SQL Fundamentals NEW
Oracle University Contact Us: + 38516306373 Oracle Database: SQL and PL/SQL Fundamentals NEW Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training delivers the
Some Naming and Coding Standards
Some Naming and Coding Standards April 25, 2000 **DRAFT ** www.plsolutions.com Please take note: these standards are in DRAFT form; you should read and edit them carefully before applying them in your
Writing Control Structures
Writing Control Structures Copyright 2006, Oracle. All rights reserved. Oracle Database 10g: PL/SQL Fundamentals 5-1 Objectives After completing this lesson, you should be able to do the following: Identify
Topics Advanced PL/SQL, Integration with PROIV SuperLayer and use within Glovia
Topics Advanced PL/SQL, Integration with PROIV SuperLayer and use within Glovia 1. SQL Review Single Row Functions Character Functions Date Functions Numeric Function Conversion Functions General Functions
Oracle Database: SQL and PL/SQL Fundamentals
Oracle University Contact Us: +966 12 739 894 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training is designed to
PL/SQL Overview. Basic Structure and Syntax of PL/SQL
PL/SQL Overview PL/SQL is Procedural Language extension to SQL. It is loosely based on Ada (a variant of Pascal developed for the US Dept of Defense). PL/SQL was first released in ١٩٩٢ as an optional extension
PL / SQL Basics. Chapter 3
PL / SQL Basics Chapter 3 PL / SQL Basics PL / SQL block Lexical units Variable declarations PL / SQL types Expressions and operators PL / SQL control structures PL / SQL style guide 2 PL / SQL Block Basic
Page 1 of 7 Welcome brendan ( Account Help Sign Out ) United States Communities I am a... I want to... Secure Search Products and Services Solutions Downloads Store Support Training Partners About Oracle
Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer.
Test: Final Exam Semester 1 Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer. Section 6 1. The following code does not violate any constraints and will
ORACLE 9I / 10G / 11G / PL/SQL COURSE CONTENT
ORACLE 9I / 10G / 11G / PL/SQL COURSE CONTENT INTRODUCTION: Course Objectives I-2 About PL/SQL I-3 PL/SQL Environment I-4 Benefits of PL/SQL I-5 Benefits of Subprograms I-10 Invoking Stored Procedures
1 Stored Procedures in PL/SQL 2 PL/SQL. 2.1 Variables. 2.2 PL/SQL Program Blocks
1 Stored Procedures in PL/SQL Many modern databases support a more procedural approach to databases they allow you to write procedural code to work with data. Usually, it takes the form of SQL interweaved
Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff
D80198GC10 Oracle Database 12c SQL and Fundamentals Summary Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff Level Professional Delivery Method Instructor-led
OPP 2007. ODTUG Kaleidoscope. An ODTUG SP* Oracle PL/SQL Programming Conference. WOW-Wide Open World, Wide Open Web!
OPP 2007 February 28 March 1, 2007 San Mateo Marriott San Mateo, California An ODTUG SP* Oracle PL/SQL Programming Conference *SP Seriously Practical Conference ODTUG Kaleidoscope June 18 21, 2007 Pre-conference
Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer.
est: Final Exam Semester 1 Review your answers, feedback, and question scores below. An asterisk (*) indicates a correct answer. Section 6 1. How can you retrieve the error code and error message of any
Handling Exceptions. Copyright 2006, Oracle. All rights reserved. Oracle Database 10g: PL/SQL Fundamentals 8-1
Handling Exceptions Copyright 2006, Oracle. All rights reserved. Oracle Database 10g: PL/SQL Fundamentals 8-1 Objectives After completing this lesson, you should be able to do the following: Define PL/SQL
Oracle 10g PL/SQL Training
Oracle 10g PL/SQL Training Course Number: ORCL PS01 Length: 3 Day(s) Certification Exam This course will help you prepare for the following exams: 1Z0 042 1Z0 043 Course Overview PL/SQL is Oracle's Procedural
Oracle PL/SQL Programming
FOURTH EDITION Oracle PL/SQL Programming Steven Feuerstein with Bill Pribvl O'REILLY' Beijing Cambridge Farnham Köln Paris Sebastopol Taipei Tokyo Table of Contents Preface xiii Part 1. Programming in
Creating PL/SQL Blocks. Copyright 2007, Oracle. All rights reserved.
What Will I Learn? In this lesson, you will learn to: Describe the structure of a PL/SQL block Identify the different types of PL/SQL blocks Identify PL/SQL programming environments Create and execute
Best Practices For PL/SQL Development in Oracle Application Express
Oracle PL/SQL and APEX Best Practices For PL/SQL Development in Oracle Application Express Steven Feuerstein [email protected] PL/SQL Evangelist Quest Software Resources for PL/SQL Developers
Microsoft Access is an outstanding environment for both database users and professional. Introduction to Microsoft Access and Programming SESSION
539752 ch01.qxd 9/9/03 11:38 PM Page 5 SESSION 1 Introduction to Microsoft Access and Programming Session Checklist Understanding what programming is Using the Visual Basic language Programming for the
Oracle Database: SQL and PL/SQL Fundamentals NEW
Oracle University Contact Us: 001-855-844-3881 & 001-800-514-06-97 Oracle Database: SQL and PL/SQL Fundamentals NEW Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals
Making the Most of Oracle PL/SQL Error Management Features
Making the Most of Oracle PL/SQL Error Management Features Copyright 2000-2008 Steven Feuerstein - Page 1 Steven Feuerstein PL/SQL Evangelist Quest Software [email protected] So...why listen
PL/SQL Practicum #2: Assertions, Exceptions and Module Stability
PL/SQL Practicum #2: Assertions, Exceptions and Module Stability John Beresniewicz Technology Manager Precise Software Solutions Agenda Design by Contract Assertions Exceptions Modular Code DESIGN BY CONTRACT
Oracle Database: Program with PL/SQL
Oracle Database: Program with PL/SQL Duration: 5 Days What you will learn This Oracle Database: Program with PL/SQL training starts with an introduction to PL/SQL and then explores the benefits of this
COMS20700 DATABASES 13 PL/SQL. COMS20700 Databases Dr. Essam Ghadafi
13 PL/SQL COMS20700 Databases Dr. Essam Ghadafi PL/SQL - OVERVIEW PL/SQL: Procedure Language/Structured Query Language. Provides programming languages features: IF, Loops, subroutines,... Code can be compiled
Error Management in Oracle PL/SQL
Fast Track PL/SQL Error Management in Oracle PL/SQL Steven Feuerstein PL/SQL Evangelist, Quest Software [email protected] PL/SQL Obsession - www.toadworld.com/sf Copyright 2000-2008 Steven Feuerstein
Commercial Database Software Development- A review.
Commercial Database Software Development- A review. A database software has wide applications. A database software is used in almost all the organizations. Over 15 years many tools have been developed
Handling Exceptions. Copyright 2008, Oracle. All rights reserved.
Handling Exceptions Handling Exceptions What Will I Learn? In this lesson, you will learn to: Describe several advantages of including exception handling code in PL/SQL Describe the purpose of an EXCEPTION
Training Guide. PL/SQL for Beginners. Workbook
An Training Guide PL/SQL for Beginners Workbook Workbook This workbook should be worked through with the associated Training Guide, PL/SQL for Beginners. Each section of the workbook corresponds to a section
Answers to the Try It Yourself Sections
APPENDIX D Answers to the Try It Yourself Sections Chapter 1, PL/SQL Concepts 1) To calculate the area of a circle, you must square the circle s radius and then multiply it by π. Write a program that calculates
Best Practices for Dynamic SQL
The PL/SQL Channel Writing Dynamic SQL in Oracle PL/SQL Best Practices for Dynamic SQL Steven Feuerstein [email protected] www.stevenfeuerstein.com www.plsqlchallenge.com Quick Reminders Download
Hypercosm. Studio. www.hypercosm.com
Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks
Introduction to PL/SQL Programming
Introduction to PL/SQL Programming Introduction to PL/SQL Programming i-ii Introduction to PL/SQL Programming 1997-2001 Technology Framers, LLC Introduction to PL/SQL Programming This publication is protected
Oracle Database: Develop PL/SQL Program Units
Oracle University Contact Us: 1.800.529.0165 Oracle Database: Develop PL/SQL Program Units Duration: 3 Days What you will learn This Oracle Database: Develop PL/SQL Program Units course is designed for
Retrieving Data Using the SQL SELECT Statement. Copyright 2006, Oracle. All rights reserved.
Retrieving Data Using the SQL SELECT Statement Objectives After completing this lesson, you should be able to do the following: List the capabilities of SQL SELECT statements Execute a basic SELECT statement
When an exception occur a message which explains its cause is received. PL/SQL Exception message consists of three parts.
ERROR HANDLING IN PLSQL When an SQL statement fails, the Oracle engine recognizes this as an Exception Condition. What is Exception Handling? PLSQL provides a feature to handle the Exceptions which occur
Oracle Database: Program with PL/SQL
Oracle University Contact Us: +33 15 7602 081 Oracle Database: Program with PL/SQL Duration: 5 Days What you will learn This course is available in Training On Demand format This Oracle Database: Program
Oracle Database: Program with PL/SQL
Oracle University Contact Us: 0845 777 7711 Oracle Database: Program with PL/SQL Duration: 5 Days What you will learn This course starts with an introduction to PL/SQL and proceeds to list the benefits
Custom Javascript In Planning
A Hyperion White Paper Custom Javascript In Planning Creative ways to provide custom Web forms This paper describes several of the methods that can be used to tailor Hyperion Planning Web forms. Hyperion
Oracle Database 11g: SQL Tuning Workshop Release 2
Oracle University Contact Us: 1 800 005 453 Oracle Database 11g: SQL Tuning Workshop Release 2 Duration: 3 Days What you will learn This course assists database developers, DBAs, and SQL developers to
An Introduction to PL/SQL. Mehdi Azarmi
1 An Introduction to PL/SQL Mehdi Azarmi 2 Introduction PL/SQL is Oracle's procedural language extension to SQL, the non-procedural relational database language. Combines power and flexibility of SQL (4GL)
Software Documentation Guidelines
Software Documentation Guidelines In addition to a working program and its source code, you must also author the documents discussed below to gain full credit for the programming project. The fundamental
Programming Database lectures for mathema
Programming Database lectures for mathematics students April 25, 2015 Functions Functions are defined in Postgres with CREATE FUNCTION name(parameter type,...) RETURNS result-type AS $$ function-body $$
Programming with SQL
Unit 43: Programming with SQL Learning Outcomes A candidate following a programme of learning leading to this unit will be able to: Create queries to retrieve information from relational databases using
Oracle to MySQL Migration
to Migration Stored Procedures, Packages, Triggers, Scripts and Applications White Paper March 2009, Ispirer Systems Ltd. Copyright 1999-2012. Ispirer Systems Ltd. All Rights Reserved. 1 Introduction The
Oracle Database 12c: Introduction to SQL Ed 1.1
Oracle University Contact Us: 1.800.529.0165 Oracle Database 12c: Introduction to SQL Ed 1.1 Duration: 5 Days What you will learn This Oracle Database: Introduction to SQL training helps you write subqueries,
Handling Exceptions. Schedule: Timing Topic 45 minutes Lecture 20 minutes Practice 65 minutes Total
Handling Exceptions Schedule: Timing Topic 45 minutes Lecture 20 minutes Practice 65 minutes Total Objectives After completing this lesson, you should be able to do the following: Define PL/SQL exceptions
Oracle Internal & Oracle Academy
Declaring PL/SQL Variables Objectives After completing this lesson, you should be able to do the following: Identify valid and invalid identifiers List the uses of variables Declare and initialize variables
Oracle Database 10g: Program with PL/SQL
Oracle University Contact Us: Local: 1800 425 8877 Intl: +91 80 4108 4700 Oracle Database 10g: Program with PL/SQL Duration: 5 Days What you will learn This course introduces students to PL/SQL and helps
Oracle Database: Program with PL/SQL
Oracle University Contact Us: 1.800.529.0165 Oracle Database: Program with PL/SQL Duration: 5 Days What you will learn View a newer version of this course /a/b/p/p/b/pulli/lili/lili/lili/lili/lili/lili/lili/lili/lili/lili/lili/li/ul/b/p/p/b/p/a/a/p/
Darshan Institute of Engineering & Technology PL_SQL
Explain the advantages of PL/SQL. Advantages of PL/SQL Block structure: PL/SQL consist of block of code, which can be nested within each other. Each block forms a unit of a task or a logical module. PL/SQL
SQL Server An Overview
SQL Server An Overview SQL Server Microsoft SQL Server is designed to work effectively in a number of environments: As a two-tier or multi-tier client/server database system As a desktop database system
Oracle Database: Introduction to SQL
Oracle University Contact Us: 1.800.529.0165 Oracle Database: Introduction to SQL Duration: 5 Days What you will learn View a newer version of this course This Oracle Database: Introduction to SQL training
SQL Server Database Coding Standards and Guidelines
SQL Server Database Coding Standards and Guidelines http://www.sqlauthority.com Naming Tables: Stored Procs: Triggers: Indexes: Primary Keys: Foreign Keys: Defaults: Columns: General Rules: Rules: Pascal
Oracle Database: Program with PL/SQL
Oracle University Contact Us: +52 1 55 8525 3225 Oracle Database: Program with PL/SQL Duration: 5 Days What you will learn View a newer version of this course This Oracle Database: Program with PL/SQL
Basic Unix/Linux 1. Software Testing Interview Prep
Basic Unix/Linux 1 Programming Fundamentals and Concepts 2 1. What is the difference between web application and client server application? Client server application is designed typically to work in a
High-Performance Oracle: Proven Methods for Achieving Optimum Performance and Availability
About the Author Geoff Ingram (mailto:[email protected]) is a UK-based ex-oracle product developer who has worked as an independent Oracle consultant since leaving Oracle Corporation in the mid-nineties.
Physical Design. Meeting the needs of the users is the gold standard against which we measure our success in creating a database.
Physical Design Physical Database Design (Defined): Process of producing a description of the implementation of the database on secondary storage; it describes the base relations, file organizations, and
Oracle SQL. Course Summary. Duration. Objectives
Oracle SQL Course Summary Identify the major structural components of the Oracle Database 11g Create reports of aggregated data Write SELECT statements that include queries Retrieve row and column data
Handling Exceptions. Schedule: Timing Topic. 45 minutes Lecture 20 minutes Practice 65 minutes Total
23 Handling Exceptions Copyright Oracle Corporation, 1999. All rights reserved. Schedule: Timing Topic 45 minutes Lecture 20 minutes Practice 65 minutes Total Objectives After completing this lesson, you
Oracle Database 11g: SQL Tuning Workshop
Oracle University Contact Us: + 38516306373 Oracle Database 11g: SQL Tuning Workshop Duration: 3 Days What you will learn This Oracle Database 11g: SQL Tuning Workshop Release 2 training assists database
PL/SQL (Cont d) Let s start with the mail_order database, shown here:
PL/SQL (Cont d) Let s start with the mail_order database, shown here: 1 Table schemas for the Mail Order database: 2 The values inserted into zipcodes table: The values inserted into employees table: 3
STUDY OF PL/SQL BLOCK AIM: To Study about PL/SQL block.
Ex.No.6 STUDY OF PL/SQL BLOCK AIM: To Study about PL/SQL block. DESCRIPTION: PL/SQL PL/SQL stands for Procedural Language extension of SQL. PL/SQL is a combination of SQL along with the procedural features
Oracle Database: Introduction to SQL
Oracle University Contact Us: +381 11 2016811 Oracle Database: Introduction to SQL Duration: 5 Days What you will learn Understanding the basic concepts of relational databases ensure refined code by developers.
AUTHENTICATION... 2 Step 1:Set up your LDAP server... 2 Step 2: Set up your username... 4 WRITEBACK REPORT... 8 Step 1: Table structures...
AUTHENTICATION... 2 Step 1:Set up your LDAP server... 2 Step 2: Set up your username... 4 WRITEBACK REPORT... 8 Step 1: Table structures... 8 Step 2: Import Tables into BI Admin.... 9 Step 3: Creating
Course -Oracle 10g SQL (Exam Code IZ0-047) Session number Module Topics 1 Retrieving Data Using the SQL SELECT Statement
Course -Oracle 10g SQL (Exam Code IZ0-047) Session number Module Topics 1 Retrieving Data Using the SQL SELECT Statement List the capabilities of SQL SELECT statements Execute a basic SELECT statement
Access Part 2 - Design
Access Part 2 - Design The Database Design Process It is important to remember that creating a database is an iterative process. After the database is created and you and others begin to use it there will
SQL Server Query Tuning
SQL Server Query Tuning A 12-Step Program By Thomas LaRock, Technical Evangelist and Head Geek Confio Software 4772 Walnut Street, Suite 100 Boulder, CO 80301 www.confio.com Introduction Query tuning is
We will learn the Python programming language. Why? Because it is easy to learn and many people write programs in Python so we can share.
LING115 Lecture Note Session #4 Python (1) 1. Introduction As we have seen in previous sessions, we can use Linux shell commands to do simple text processing. We now know, for example, how to count words.
10 Steps Process to your LMS
Implementing an Learning Management System 10 Steps Process to your LMS CapitalWave Inc. White Paper September 2010 1 Table of Contents: LMS Steps 1 4: Analysis Training Department Analysis The Vendor
Oracle For Beginners Page : 1
Oracle For Beginners Page : 1 Chapter 17 EXCEPTION HANDLING What is an? How to handle s? Predefined s When NO_DATA_FOUND is not raised? User-defined Reraising an Associating an With An Oracle Error Exception
Oracle Database 11g SQL
AO3 - Version: 2 19 June 2016 Oracle Database 11g SQL Oracle Database 11g SQL AO3 - Version: 2 3 days Course Description: This course provides the essential SQL skills that allow developers to write queries
A Generic business rules validation system for ORACLE Applications
A Generic business rules validation system for ORACLE Applications Olivier Francis MARTIN System analyst European Laboratory for Particle Physics - CERN / AS-DB Geneva - SWITZERLAND Jean Francois PERRIN
Oracle 11g PL/SQL training
Oracle 11g PL/SQL training Course Highlights This course introduces students to PL/SQL and helps them understand the benefits of this powerful programming language. Students learn to create PL/SQL blocks
Migrating Non-Oracle Databases and their Applications to Oracle Database 12c O R A C L E W H I T E P A P E R D E C E M B E R 2 0 1 4
Migrating Non-Oracle Databases and their Applications to Oracle Database 12c O R A C L E W H I T E P A P E R D E C E M B E R 2 0 1 4 1. Introduction Oracle provides products that reduce the time, risk,
Bullet Proof Your PL/SQL
Oracle PL/SQL Best Practices Bullet Proof Your PL/SQL For those few times when something doesn't go as planned... Audio will be available through your computer/headset. You do not need to dial in (and
Intro to Embedded SQL Programming for ILE RPG Developers
Intro to Embedded SQL Programming for ILE RPG Developers Dan Cruikshank DB2 for i Center of Excellence 1 Agenda Reasons for using Embedded SQL Getting started with Embedded SQL Using Host Variables Using
Data Modeling Basics
Information Technology Standard Commonwealth of Pennsylvania Governor's Office of Administration/Office for Information Technology STD Number: STD-INF003B STD Title: Data Modeling Basics Issued by: Deputy
PERFORMANCE TUNING FOR PEOPLESOFT APPLICATIONS
PERFORMANCE TUNING FOR PEOPLESOFT APPLICATIONS 1.Introduction: It is a widely known fact that 80% of performance problems are a direct result of the to poor performance, such as server configuration, resource
Maintaining Stored Procedures in Database Application
Maintaining Stored Procedures in Database Application Santosh Kakade 1, Rohan Thakare 2, Bhushan Sapare 3, Dr. B.B. Meshram 4 Computer Department VJTI, Mumbai 1,2,3. Head of Computer Department VJTI, Mumbai
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Chapter 1: Key Concepts of Programming and Software Engineering
Chapter 1: Key Concepts of Programming and Software Engineering Software Engineering Coding without a solution design increases debugging time - known fact! A team of programmers for a large software development
Oracle Database: Introduction to SQL
Oracle University Contact Us: 1.800.529.0165 Oracle Database: Introduction to SQL Duration: 5 Days What you will learn This Oracle Database: Introduction to SQL training teaches you how to write subqueries,
The Rules 1. One level of indentation per method 2. Don t use the ELSE keyword 3. Wrap all primitives and Strings
Object Calisthenics 9 steps to better software design today, by Jeff Bay http://www.xpteam.com/jeff/writings/objectcalisthenics.rtf http://www.pragprog.com/titles/twa/thoughtworks-anthology We ve all seen
Instant SQL Programming
Instant SQL Programming Joe Celko Wrox Press Ltd. INSTANT Table of Contents Introduction 1 What Can SQL Do for Me? 2 Who Should Use This Book? 2 How To Use This Book 3 What You Should Know 3 Conventions
Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1
Guide to SQL Programming: SQL:1999 and Oracle Rdb V7.1 A feature of Oracle Rdb By Ian Smith Oracle Rdb Relational Technology Group Oracle Corporation 1 Oracle Rdb Journal SQL:1999 and Oracle Rdb V7.1 The
IBM InfoSphere Optim Test Data Management solution for Oracle E-Business Suite
IBM InfoSphere Optim Test Data Management solution for Oracle E-Business Suite Streamline test-data management and deliver reliable application upgrades and enhancements Highlights Apply test-data management
2 SQL in iseries Navigator
2 SQL in iseries Navigator In V4R4, IBM added an SQL scripting tool to the standard features included within iseries Navigator and has continued enhancing it in subsequent releases. Because standard features
METADATA-DRIVEN QLIKVIEW APPLICATIONS AND POWERFUL DATA INTEGRATION WITH QLIKVIEW EXPRESSOR
METADATA-DRIVEN QLIKVIEW APPLICATIONS AND POWERFUL DATA INTEGRATION WITH QLIKVIEW EXPRESSOR A QlikView Technical Brief Document March 2013 qlikview.com Introduction This technical brief highlights a subset
Oracle Database 11g: Program with PL/SQL
Oracle University Entre em contato: 0800 891 6502 Oracle Database 11g: Program with PL/SQL Duração: 5 Dias Objetivos do Curso This course introduces students to PL/SQL and helps them understand the benefits
Query and Export Guide
Query and Export Guide 011712 2012 Blackbaud, Inc. This publication, or any part thereof, may not be reproduced or transmitted in any form or by any means, electronic, or mechanical, including photocopying,
An Oracle White Paper June 2013. Migrating Applications and Databases with Oracle Database 12c
An Oracle White Paper June 2013 Migrating Applications and Databases with Oracle Database 12c Disclaimer The following is intended to outline our general product direction. It is intended for information
