Error Management in Oracle PL/SQL
|
|
|
- Bennett Cain
- 10 years ago
- Views:
Transcription
1 Fast Track PL/SQL Error Management in Oracle PL/SQL Steven Feuerstein PL/SQL Evangelist, Quest Software PL/SQL Obsession - Copyright Steven Feuerstein - Page 1
2 How to benefit most from this training Watch, listen, ask questions, focus on concepts and principles. Download and use any of my training materials: PL/SQL Obsession Download and use any of my scripts (examples, performance scripts, reusable code) from the same location: the demo.zip file. filename_from_demo_zip.sql You have my permission to use all these materials to do internal trainings and build your own applications. But remember: they are not production ready. You must test them and modify them to fit your needs. Copyright Steven Feuerstein - Page 2
3 Page 3 And some other incredibly fantastic and entertaining websites for PL/SQL
4 Error Management in PL/SQL Defining exceptions Raising exceptions Handling exceptions Best practices for error management Let s start with some quizzes to test your knowledge of the basic mechanics of exception handling in PL/SQL. Copyright Steven Feuerstein - Page 4
5 Quiz: When strings don't fit...(1) What do you see after running this block? DECLARE aname VARCHAR2(5); BEGIN BEGIN aname := 'Big String'; DBMS_OUTPUT.PUT_LINE (aname); EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE ('Inner block'); END; DBMS_OUTPUT.PUT_LINE ('What error?'); EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE ('Outer block'); END; 5 excquiz1.sql
6 Quiz: When strings don't fit...(2) What do you see after running this block? DECLARE aname VARCHAR2(5); BEGIN DECLARE aname VARCHAR2(5) := 'Big String'; BEGIN DBMS_OUTPUT.PUT_LINE (aname); EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE ('Inner block'); END; DBMS_OUTPUT.PUT_LINE ('What error?'); EXCEPTION WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE ('Outer block'); END; / 6 excquiz2.sql
7 Quiz: SQL in PL/SQL DECLARE v_totsal NUMBER; v_ename emp.ename%type; BEGIN SELECT SUM (sal) INTO v_totsal FROM emp WHERE deptno = -15; DBMS_OUTPUT.PUT_LINE ( 'Total salary: ' v_totsal); SELECT ename INTO v_ename FROM emp WHERE sal = (SELECT MAX (sal) FROM emp WHERE deptno = -15); DBMS_OUTPUT.PUT_LINE ( 'The winner is: ' v_ename); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('Outer block'); END; / What do you see after running this block? excquiz4.sql 7
8 Utter confusion of reused exceptions CREATE OR REPLACE PROCEDURE who_did_that ( emp_in IN emp.empno%type) IS v_ename emp.ename%type; line VARCHAR2 (1023); fid UTL_FILE.file_type; list_of_names DBMS_SQL.varchar2s; BEGIN SELECT ename INTO v_ename FROM emp WHERE empno = emp_in; DBMS_OUTPUT.put_line (v_ename); fid := UTL_FILE.fopen ('c:\temp', 'notme.sql', 'R'); UTL_FILE.get_line (fid, line); UTL_FILE.get_line (fid, line); IF list_of_names (100) > 0 THEN DBMS_OUTPUT.put_line ('Pos value at 100'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.put_line ('Who did that?'); END who_did_that; / 8 How do you where the exception was raised? excquiz6.sql
9 Quiz: An Exceptional Package PACKAGE valerr IS FUNCTION get RETURN VARCHAR2; END valerr; PACKAGE BODY valerr IS v VARCHAR2(1) := abc ; FUNCTION get RETURN VARCHAR2 IS BEGIN RETURN v; END; BEGIN DBMS_OUTPUT.PUT_LINE ( 'Before I show you v...'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ( Trapped the error! ); END valerr; SQL> EXECUTE p.l (valerr.get); 9 I create the valerr package and then execute the command below. What is displayed on the screen? Key to remember: even if package initialization fails, Oracle marks the package as initialized. valerr.pkg valerr2.pkg
10 Defining Exceptions The EXCEPTION is a limited type of data. Has just two attributes: code and message. You can RAISE and handle an exception, but it cannot be passed as an argument in a program. Give names to error numbers with the EXCEPTION_INIT PRAGMA. 10 CREATE OR REPLACE PROCEDURE upd_for_dept ( dept_in IN employee.department_id%type, newsal_in IN employee.salary%type ) IS bulk_errors EXCEPTION; PRAGMA EXCEPTION_INIT (bulk_errors, );
11 Raising Exceptions RAISE raises the specified exception by name. RAISE; re-raises current exception. Callable only within the exception section. RAISE_APPLICATION_ERROR Communicates an application specific error back to a non-pl/sql host environment. Error numbers restricted to the -20, ,000 range. 11
12 Using RAISE_APPLICATION_ERROR RAISE_APPLICATION_ERROR ( num binary_integer, msg varchar2, keeperrorstack boolean default FALSE ); Communicate an error number and message to a non-pl/sql host environment. The following code from a database triggers shows a typical (and problematic) usage of RAISE_APPLICATION_ERROR: IF :NEW.birthdate > ADD_MONTHS (SYSDATE, -1 * 18 * 12) THEN RAISE_APPLICATION_ERROR (-20070, Employee must be 18. ); END IF; 12
13 Handling Exceptions The EXCEPTION section consolidates all error handling logic in a block. But only traps errors raised in the executable section of the block. Several useful functions usually come into play: SQLCODE and SQLERRM DBMS_UTILITY.FORMAT_CALL_STACK DBMS_UTILITY.FORMAT_ERROR_STACK DBMS_UTILITY.FORMAT_ERROR_BACKTRACE The DBMS_ERRLOG package Quick and easy logging of DML errors 13
14 SQLCODE and SQLERRM SQLCODE returns the error code of the most recently-raised exception. You cannot call it inside an SQL statement (even inside a PL/SQL block). SQLERRM is a generic lookup function: return the message text for an error code. And if you don't provide an error code, SQLERRM returns the message for SQLCODE. But...SQLERRM might truncate the message. Very strange, but it is possible. So Oracle recommends that you not use this function. 14 sqlerrm.sql
15 DBMS_UTILITY error functions Answer the question "How did I get here?" with DBMS_UTILITY.FORMAT_CALL_STACK. Get the full error message with DBMS_UTILITY.FORMAT_ERROR_STACK It will not truncate your error message. And it might even return a stack! Find line number on which error was raised with DBMS_UTILITY.FORMAT_ERROR_BACKTRACE Introduced in Oracle10g Release 2, it returns the full stack of errors with line number information. Formerly, this stack was available only if you let the error go unhandled. callstack.sql & callstack.pkg errorstack.sql 15 backtrace.sql
16 More on the BACKTRACE function When you re-raise your exception (RAISE;) or raise a different exception, subsequent BACKTRACE calls will point to that line. So before a re-raise, call BACKTRACE and store that information to avoid losing the original line number. The BACKTRACE does not include the error message, so you will also want to call the FORMAT_ERROR_STACK function. 16 backtrace.sql bt.pkg
17 Continuing Past Exceptions What if you want to continue processing in your program even if an error has occurred? Three options... Use a nested block FORALL with SAVE EXCEPTIONS DBMS_ERRLOG Copyright Steven Feuerstein - Page 17 continue_past_exception.sql
18 Exception handling and FORALL When an exception occurs in a DML statement... That statement is rolled back and the FORALL stops. All (previous) successful statements are not rolled back. Use the SAVE EXCEPTIONS clause to tell Oracle to continue past exceptions, and save the error information for later. Then check the contents of the pseudo-collection of records, SQL%BULK_EXCEPTIONS. Two fields: ERROR_INDEX and ERROR_CODE Copyright Steven Feuerstein - Page 18
19 FORALL with SAVE EXCEPTIONS Add SAVE EXCEPTIONS to enable FORALL to suppress errors at the statement level. CREATE OR REPLACE PROCEDURE load_books (books_in IN book_obj_list_t) IS bulk_errors EXCEPTION; PRAGMA EXCEPTION_INIT ( bulk_errors, ); BEGIN FORALL indx IN books_in.first..books_in.last SAVE EXCEPTIONS INSERT INTO book values (books_in(indx)); EXCEPTION WHEN bulk_errors THEN FOR indx in 1..SQL%BULK_EXCEPTIONS.COUNT LOOP log_error (SQL%BULK_EXCEPTIONS(indx).ERROR_CODE); END LOOP; END; Allows processing of all statements, even after an error occurs. Iterate through pseudo-collection of errors. Copyright Steven Feuerstein - Page 19 bulkexc.sql
20 DBMS_ERRLOG (new in Oracle10gR2) Use this package to enable row-level error logging (and exception suppression) for DML statements. Compare to FORALL SAVE EXCEPTIONS, which suppresses exceptions at the statement level. Creates a log table to which errors are written. Lets you specify maximum number of "to ignore" errors. Better performance than trapping, logging and continuing past exceptions. Exception handling is slow. 20 dbms_errlog.sql dbms_errlog_helper.pkg dbms_errlog_vs_save_exceptions.sql
21 Best practices for error management No application code in the exception section. Avoid suppression of exceptions. Especially WHEN OTHERS THEN NULL; Do not hard-code error numbers, messages and error logging mechanics. Set standards for error mgt code before you start building your application. Make sure all developers rely on a single error management utility. 21
22 No application code in the exc. section Two common scenarios cause this: Deliberately raised exceptions "Unfortunate" exceptions Two ways to avoid this problem: Encapsulate the code that raises an exception Give the caller of your code the option to decide if it is an exception or simply a different data condition. Copyright Steven Feuerstein - Page 22 exec_ddl_from_file_badnews.sql raise_if_ndf.sql
23 Avoid suppression of exceptions The "I don't care" exception section Maybe you really don't care, but whenever you trap and do not re-raise an exception, you should... Consider logging the error for later analysis At least include a comment explaining why an exception should be ignored. EXCEPTION WHEN OTHERS THEN NULL; END; /* Remove table if it exists, otherwise just keep going. */ BEGIN EXECUTE IMMEDIATE 'DROP TABLE temptab'; EXCEPTION WHEN OTHERS THEN NULL; END; 23
24 Do not hard-code error codes, messages and error logging mechanics WHEN NO_DATA_FOUND THEN l_code := SQLCODE; l_errm := SQLERRM; INSERT INTO errlog VALUES ( l_code, 'No company for id ' TO_CHAR ( v_id ), 'fixdebt', SYSDATE, USER ); WHEN DUP_VAL_ON_INDEX THEN RAISE_APPLICATION_ERROR (-20984, 'Company with name already exists'); WHEN OTHERS THEN l_code := SQLCODE; l_errm := SQLERRM; INSERT INTO errlog VALUES (l_code, l_errm, 'fixdebt', SYSDATE, USER ); RAISE; END; Let's find all the hard-codings... What a mess of code! 24
25 If you must use RAISE_APPLICATION_ERROR... Avoid hard-coding error numbers and messages. And don't pull those -20NNN numbers out of thin air! Instead, build a repository of errors and generate code that offers names for errors for developers to use. Better yet: don t use RAISE_APPLICATION_ERROR at all. 25 msginfo.*
26 Rely on a single error mgt utility Objectives of this utility: Everyone writes error management code in the same way. Minimize time spent by application developers in the exception section. Make it easy to gather comprehensive system and application clues as to the source of the problem. How do we accomplish this? Fix the limitations of the EXCEPTION datatype. Provide procedures and functions that do the work for you. I will use the Quest Error Manager as the model for such a utility. 26
27 The Quest Error Manager solution This freeware utility (see URL below) implements all of the ideas mentioned above. Error instance table-based repository, with ability to store as much context as needed. High-level API that allows all developers to easily... Raise and handle exceptions Communicate error information back to the host environment. Downloads-Exclusive ToadWorld Downloads 27
28 When an error occurs... Fix the limitations of EXCEPTION Sure, it's nice to know what the error code is. But what I care most about is what caused this particular error to be raised. Think in terms of instances of an error. What caused this error? What were the application-specific values or context in which the error occurred? So the challenge becomes: how do I get hold of and save all that critical application information? 28
29 ERD for error definition tables Error instance - one row for every error raised/logged Error context - name-value pairs per instance Error repository - static error definitions 29
30 REGISTER_ERROR Register error instance, return handle. RAISE_ERROR Quest Error Manager API Register the error, and then re-raise the exception to stop the calling program from continuing. ADD_CONTEXT Add a name-value pair to an error instance. GET_ERROR_INFO Retrieve information about latest (or specified) error. Plus...tracing, substitutes for DBMS_OUTPUT, assertions. 30
31 Applying the Error Manager API The idea is to let the application developers specify the information that only they can provide. Everything else is left to the utility. All information is written out to the tables. The front end or support team can then retrieve the data. Provide better information to the users. Make it easier to figure out what went wrong and how to fix the problem. 31 qem_demo.sql
32 Error Management Summary - 1 Exceptions raised in the declaration section always escape unhandled. Consider assigning default values in the executable section instead. Call DBMS_UTILITY functions whenever you are logging errors and tracing execution. Consider using DBMS_ERRLOG when executing a large number of DML statements. But don't use the ERR$ table "as is". Copyright Steven Feuerstein - Page 32
33 Error Management Summary - 2 Set standards before you start coding It's not the kind of thing you can easily add in later Use standard infrastructure components Everyone and all programs need to handle errors the same way Quest Error Manager offers a good example. Don't accept the limitations of Oracle's current implementation. You can do lots to improve the situation. 33
34 Very few of my ideas are truly original. I have learned from every one of these books and authors and you can, too! Acknowledgements and Resources Copyright Steven Feuerstein - Page 34
35 A guide to my mentors/resources Horton Hears a Who - if you have small children and you have not read this book to them, please do so immediately! A story of basic human compassion. A Timeless Way of Building a beautiful and deeply spiritual book on architecture that changed the way many developers approach writing software. On Intelligence a truly astonishing book that lays out very concisely a new paradigm for understanding how our brains work. Peopleware a classic text on the human element behind writing software. Refactoring formalized techniques for improving the internals of one's code without affect its behavior. Code Complete another classic programming book covering many aspects of code construction. The Cult of Information thought-provoking analysis of some of the downsides of our information age. Patterns of Software a book that wrestles with the realities and problems with code reuse and design patterns. Extreme Programming Explained excellent introduction to XP. Code and Other Laws of Cyberspace a groundbreaking book that recasts the role of software developers as law-writers, and questions the direction that software is today taking us. Copyright Steven Feuerstein - Page 35
36 Some Free PL/SQL Resources Oracle Technology Network PL/SQL page OTN Best Practice PL/SQL Oracle documentation complete, online, searchable! PL/SQL Obsession - my on-line portal for PL/SQL developers Quest Pipelines I Love PL/SQL and...help improve the PL/SQL language! PL/Vision Copyright Steven Feuerstein - Page 36
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
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
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
6b Continuing Past Exceptions
The PL/SQL Channel Error Management in Oracle PL/SQL 6b Continuing Past Exceptions with FORALL and SAVE EXCEPTIONS Steven Feuerstein [email protected] www.stevenfeuerstein.com www.plsqlchallenge.com
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
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
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
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
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 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
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
PL/SQL Coding Style Guidelines Introducing Error Handling, Tracing and Coding Standards. Author: Vishal Gupta
PL/SQL Coding Style Guidelines Introducing Error Handling, Tracing and Coding Standards Author: Vishal Gupta Introduction Presenter: Vishal Gupta Topics: Reasons for guidelines Standards for error handling
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
Handling PL/SQL Errors
Handling PL/SQL Errors In PL/SQL, a warning or error condition is called an exception. Exceptions can be internally defined (by the run-time system) or user defined. Examples of internally defined exceptions
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
DECLARATION SECTION. BODY STATEMENTS... Required
1 EXCEPTION DECLARATION SECTION Optional BODY STATEMENTS... Required STATEMENTS Optional The above Construction is called PL/SQL BLOCK DATATYPES 2 Binary Integer (-2 **31-1,2**31+1) signed integer fastest
Handling PL/SQL Errors
7 Handling PL/SQL Errors There is nothing more exhilarating than to be shot at without result. Winston Churchill Run-time errors arise from design faults, coding mistakes, hardware failures, and many other
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
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
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
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
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
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 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
14 Triggers / Embedded SQL
14 Triggers / Embedded SQL COMS20700 Databases Dr. Essam Ghadafi TRIGGERS A trigger is a procedure that is executed automatically whenever a specific event occurs. You can use triggers to enforce constraints
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
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
Database programming 20/08/2015. DBprog news. Outline. Motivation for DB programming. Using SQL queries in a program. Using SQL queries in a program
DBprog news Database programming http://eric.univ-lyon2.fr/~jdarmont/?page_id=451 M1 Informatique Year 2015-2016 Jérôme Darmont http://eric.univ-lyon2.fr/~jdarmont/ http://eric.univ-lyon2.fr/~jdarmont/?feed=rss2
Automated Testing Options for PL/SQL Steven Feuerstein PL/SQL Evangelist, Quest Software www.quest.com [email protected]
Automated Testing Options for PL/SQL Steven Feuerstein PL/SQL Evangelist, Quest Software www.quest.com [email protected] Copyright 2008 Feuerstein and Associates How to benefit most from this
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 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: 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
Overview of PL/SQL. About PL/SQL
Overview of PL/SQL About PL/SQL PL/SQL is an extension to SQL with design features of programming languages. Data manipulation and query statements of SQL are included within procedural units of code.
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
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
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
An Oracle White Paper June 2014. RESTful Web Services for the Oracle Database Cloud - Multitenant Edition
An Oracle White Paper June 2014 RESTful Web Services for the Oracle Database Cloud - Multitenant Edition 1 Table of Contents Introduction to RESTful Web Services... 3 Architecture of Oracle Database Cloud
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
VARRAY AND NESTED TABLE
Oracle For Beginners Page : 1 Chapter 23 VARRAY AND NESTED TABLE What is a collection? What is a VARRAY? Using VARRAY Nested Table Using DML commands with Nested Table Collection methods What is a collection?
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
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
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 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
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
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
Oracle For Beginners Page : 1
Oracle For Beginners Page : 1 Chapter 24 NATIVE DYNAMIC SQL What is dynamic SQL? Why do we need dynamic SQL? An Example of Dynamic SQL Execute Immediate Statement Using Placeholders Execute a Query Dynamically
Introduction to Oracle PL/SQL Programming V2.1 - Lessons 11-End
Introduction to Oracle PL/SQL Programming V2.1 - Lessons 11-End Introduction to Oracle PL/SQLProgramming Page i Table of Contents 0. How to Use This Course...0.1 Lesson Objectives...0.2 Target Audience...0.3
PL/SQL & SQL. Coding Guidelines. Trivadis AG. Document Version 2.0 2011 Trivadis AG
PL/SQL & SQL CODING GUIDELINES VERSION 2.0 PL/SQL & SQL Coding Guidelines Trivadis AG Document Version 2.0 2011 Trivadis AG Foreword Coding Guidelines are an important quality standard for any programming
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
D61830GC30. MySQL for Developers. Summary. Introduction. Prerequisites. At Course completion After completing this course, students will be able to:
D61830GC30 for Developers Summary Duration Vendor Audience 5 Days Oracle Database Administrators, Developers, Web Administrators Level Technology Professional Oracle 5.6 Delivery Method Instructor-led
How To Name A Program In Apl/Sql
PL/SQL This section will provide a basic understanding of PL/SQL. This document will briefly cover the main concepts behind PL/SQL and provide brief examples illustrating the important facets of the language.
PL/SQL Programming Concepts: Review. Copyright 2004, Oracle. All rights reserved.
PL/SQL Programming Concepts: Review Copyright 2004, Oracle. All rights reserved. PL/SQL-2 SQL PL/SQL PL/SQL Run-Time Architecture PL/SQL block procedural Procedural statement executor PL/SQL Engine Oracle
PL/SQL Programming Tips
PL/SQL Programming Tips Contents Naming Conventions... 3 Why need naming convention... 3 Some facts that matter... 3 General Guidelines... 3 Naming Conventions... 4 Coding Style... 5 General Coding Style...
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,
Oracle Database 10g: Introduction to SQL
Oracle University Contact Us: 1.800.529.0165 Oracle Database 10g: Introduction to SQL Duration: 5 Days What you will learn This course offers students an introduction to Oracle Database 10g database technology.
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
Oracle10g PL/SQL Programming V1.0
Oracle10g PL/SQL Programming V1.0 Oracle10g PL/SQL Programming SkillBuilders, Inc. 24 Salt Pond Road, Unit C-4 South Kingstown, RI 02880 www.skillbuilders.com [email protected] Author: David
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
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
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
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
Advanced SQL Injection in Oracle databases. Esteban Martínez Fayó
Advanced SQL Injection in Oracle databases Esteban Martínez Fayó February 2005 Outline Introduction SQL Injection attacks How to exploit Exploit examples SQL Injection in functions defined with AUTHID
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)
Oracle For Beginners Page : 1
Oracle For Beginners Page : 1 Chapter 22 OBJECT TYPES Introduction to object types Creating object type and object Using object type Creating methods Accessing objects using SQL Object Type Dependencies
Relational Databases for the Business Analyst
Relational Databases for the Business Analyst Mark Kurtz Sr. Systems Consulting Quest Software, Inc. [email protected] 2010 Quest Software, Inc. ALL RIGHTS RESERVED Agenda The RDBMS and its role in
Oracle Database Cloud
Oracle Database Cloud Shakeeb Rahman Database Cloud Service Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may
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
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
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
SQL/PSM. Outline. Database Application Development Oracle PL/SQL. Why Stored Procedures? Stored Procedures PL/SQL. Embedded SQL Dynamic SQL
Outline Embedded SQL Dynamic SQL Many host languages: C, Cobol, Pascal, etc. JDBC (API) SQLJ (Embedded) Java Database Application Development Oracle PL/SQL Stored procedures CS430/630 Lecture 15 Slides
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
Consulting. Personal Attention, Expert Assistance
Consulting Personal Attention, Expert Assistance 1 Writing Better SQL Making your scripts more: Readable, Portable, & Easily Changed 2006 Alpha-G Consulting, LLC All rights reserved. 2 Before Spending
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
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 $$
Oracle PL/SQL Language. CIS 331: Introduction to Database Systems
Oracle PL/SQL Language CIS 331: Introduction to Database Systems Topics: Structure of a PL/SQL program Exceptions 3-valued logic Loops (unconditional, while, for) Cursors Procedures Functions Triggers
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: 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
Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification
Chapter 5 More SQL: Complex Queries, Triggers, Views, and Schema Modification Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5 Outline More Complex SQL Retrieval Queries
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/
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
Oracle9i: Develop PL/SQL Program Units
Oracle9i: Develop PL/SQL Program Units Student Guide Volume 2 40056GC10 Production 1.0 July 2001 D33491 Author Nagavalli Pataballa Technical Contributors and Reviewers Anna Atkinson Bryan Roberts Caroline
2. Which of the following declarations is invalid? Mark for Review (1) Points
Mid Term Exam Semester 1 - Part 1 1. 1. Null 2. False 3. True 4. 0 Which of the above can be assigned to a Boolean variable? 2 and 3 2, 3 and 4 1, 2 and 3 (*) 1, 2, 3 and 4 2. Which of the following declarations
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
O Reilly Ebooks Your bookshelf on your devices!
O Reilly Ebooks Your bookshelf on your devices! When you buy an ebook through oreilly.com you get lifetime access to the book, and whenever possible we provide it to you in five, DRM-free file formats
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
Cabot Consulting Oracle Solutions. The Benefits of this Approach. Infrastructure Requirements
Scheduling Workbooks through the Application Concurrent Manager By Rod West, Cabot Oracle Application users will be very familiar with the Applications concurrent manager and how to use it to schedule
1 Triggers. 2 PL/SQL Triggers
1 Triggers Triggers are simply stored procedures that are ran automatically by the database whenever some event (usually a table update) happens. We won t spend a great deal of time talking about how to
SQL Databases Course. by Applied Technology Research Center. This course provides training for MySQL, Oracle, SQL Server and PostgreSQL databases.
SQL Databases Course by Applied Technology Research Center. 23 September 2015 This course provides training for MySQL, Oracle, SQL Server and PostgreSQL databases. Oracle Topics This Oracle Database: SQL
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
PL/SQL Programming. Oracle Database 12c. Oracle Press ORACLG. Michael McLaughlin. Mc Graw Hill Education
ORACLG Oracle Press Oracle Database 12c PL/SQL Programming Michael McLaughlin Mc Graw Hill Education New York Chicago San Francisco Athens London Madrid Mexico City Milan New Delhi Singapore Sydney Toronto
Procedural Extension to SQL using Triggers. SS Chung
Procedural Extension to SQL using Triggers SS Chung 1 Content 1 Limitations of Relational Data Model for performing Information Processing 2 Database Triggers in SQL 3 Using Database Triggers for Information
RDBMS Using Oracle. Lecture Week 7 Introduction to Oracle 9i SQL Last Lecture. [email protected]. Joining Tables
RDBMS Using Oracle Lecture Week 7 Introduction to Oracle 9i SQL Last Lecture Joining Tables Multiple Table Queries Simple Joins Complex Joins Cartesian Joins Outer Joins Multi table Joins Other Multiple
Virtual Private Database Features in Oracle 10g.
Virtual Private Database Features in Oracle 10g. SAGE Computing Services Customised Oracle Training Workshops and Consulting. Christopher Muir Senior Systems Consultant Agenda Modern security requirements
Hacking and Protecting Oracle DB. Slavik Markovich CTO, Sentrigo
Hacking and Protecting Oracle DB Slavik Markovich CTO, Sentrigo What s This Presentation About? Explore SQL injection in depth Protect your code Finding vulnerable code Real world example What We'll Not
Porting Oracle Applications to PostgreSQL
Porting Oracle Applications to PostgreSQL Peter Eisentraut, credativ GmbH / credativ Ltd. PGCon 2008 Porting Oracle Applications to PostgreSQL: 1 / 80 Disclaimers This presentation was written by a PostgreSQL
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
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
Bull s Database Migration Business Unit Oracle PL/SQL to PostgreSQL PL/pgSQL Translation Technical Notes
Oracle PL/SQL Package Translation to Postgres PL/pgSQL Oracle Package Global Associative Array (index-by binary_integer) Translation If you ve explored the Postgres PL/pgSQLdocumentation, then no doubt
