Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Introduction to PL/SQL. 2  Procedural programming language  Uses detailed instructions  Processes statements sequentially  Combines SQL commands.

Similar presentations


Presentation on theme: "1 Introduction to PL/SQL. 2  Procedural programming language  Uses detailed instructions  Processes statements sequentially  Combines SQL commands."— Presentation transcript:

1 1 Introduction to PL/SQL

2 2  Procedural programming language  Uses detailed instructions  Processes statements sequentially  Combines SQL commands with procedural instructions  Used to perform sequential processing using an Oracle database What is PL/SQL?

3 3 PL/SQL Variables Variable names must follow the Oracle naming standard Can use reserved words (BEGIN, NUMBER) and table names for variable names, but is not a good practice Make variable names descriptive Use lower-case letters, and separate words with underscores Example: current_s_id

4 4 Declaring PL/SQL Variables PL/SQL is a strongly-typed language All variables must be declared prior to use Syntax for declaring a variable: variable_name data_type_declaration; Example: current_s_id NUMBER(6);

5 5 PL/SQL Data Types Scalar References a single value Composite References a data structure Reference References a specific database item LOB References a large binary object

6 6 Scalar Data Types Database scalar data types: VARCHAR2 CHAR DATE LONG NUMBER Non-database scalar data types: Integers: BINARY_INTEGER, INTEGER, INT, SMALLINT Decimal numbers: DEC, DECIMAL, DOUBLE, PRECISION, NUMERIC, REAL BOOLEAN

7 7 Composite Data Types Reference multiple data elements, such as a record Types: RECORD TABLE VARRAY Tabular structure that can expand or contract as needed

8 8 Reference Data Types Reference a database item Assume data type of item %TYPE: assumes data type of field %ROWTYPE: assumes data type of entire row

9 9 DECLARE Variable declarations BEGIN Program statements EXCEPTION Error-handling statements END; Body Variable Declarations Exception Section Exception Section PL/SQL Program Structure

10 10  May span multiple text editor lines  Each line ends with a semicolon  Text is not case sensitive PL/SQL Program Lines

11 11  Block of comments are delimited with /* */ /* */  Single comment line starts with 2 hyphens -- comment on a single line Comment Statements

12 12 ExampleResult Arithmetic Operators

13 13  Assignment operator: :=  Variable being assigned to a new value is on left side of assignment operator  New value is on right side of operator student_name := ‘John Miller’; student_name := current_student; Assignment Statements

14 14  Normally PL/SQL is used with other Oracle utilities such as forms or reports  You will learn to use PL/SQL in SQL*Plus  Command to activate memory buffer in SQL*Plus to enable output from PL/SQL programs: SQL> SET SERVEROUTPUT ON SIZE buffer_size; SQL> SET SERVEROUTPUT ON SIZE 4000; Displaying PL/SQL Output in SQL*Plus

15 15  Command to output data from a PL/SQL program in SQL*Plus: DBMS_OUTPUT.PUT_LINE(‘output string’); DBMS_OUTPUT.PUT_LINE(‘Current Output:’); Displaying PL/SQL Program Output in SQL*Plus

16 16  Copy program code from Notepad to SQL*Plus  Type / to execute Executing a PL/SQL Program in SQL*Plus

17 17  TO_DATE: character string to DATE TO_DATE(‘07/14/01’, ‘MM/DD/YY’);  TO_NUMBER: character string to NUMBER TO_NUMBER(‘2’);  TO_CHAR: NUMBER or DATE to character string TO_CHAR(2); TO_CHAR(SYSDATE, ‘MM/DD/YYYY HH:MI’); PL/SQL Data Type Conversion Functions

18 18  Concatenating strings: joining 2 or more character strings into a single string  Concatenation operator: || s_first_name := ‘Sarah’ s_last_name := ‘Miller’ s_full_name := s_first_name || ‘ ’ || s_last_name Character String Functions

19 19  RTRIM: removes blank trailing spaces cust_address := RTRIM(cust_address);  LENGTH: returns string length (number of characters) address_length := LENGTH(cust_address);  UPPER, LOWER: changes characters to all upper or lower case s_name := UPPER(s_name); s_name := LOWER(s_name); PL/SQL Character String Functions

20 20  INSTR: searches a string and looks for a matching substring and returns its starting position starting_position := INSTR(string_being_searched, search_string>); blank_position := INSTR(‘Sarah Miller’, ‘ ’); PL/SQL Character String Functions

21 21  SUBSTR: extracts a specific number of characters from a string, starting at a given point extracted_string := SUBSTR(string_being_searched, starting_point, number_of_characters_to_extract); s_first_name := SUBSTR(‘Sarah Miller’, 1,5); PL/SQL Character String Functions

22 22  Syntax error  Does not follow language guidelines  Causes a PLS- compile error  Examples: misspelling a reserved word, using a function incorrectly  Logic error  Program compiles correctly, but does not give correct output Debugging PL/SQL Programs

23 23  Isolate the line that is causing the error  This may be before or after the line that is flagged by the compiler  Comment out lines as necessary until program runs  One error may cause several cascading errors, so re-run program after fixing each error Locating and Correcting Syntax Errors

24 24 1.Identify the output variable(s) that have the error. 2.Identify the inputs and calculations that contribute to the error. 3.Display the values of the inputs using DBMS_OUTPUT commands. 4.Take a break and look at it again later. 5.Ask a fellow student for help. 6.Ask your instructor for help. Locating and Fixing Logic Errors

25 25 NULL Values in Assignment Statements Until a value is assigned to a variable, the variable’s value is NULL Performing an arithmetic value on a NULL value always results in a NULL value Advice: Always initialize variable values

26 26  IF/END IF: IF condition THEN program statements END IF;  IF/ELSE/END IF: IF condition THEN program statements ELSE alternate program statements END IF ;  IF/THEN PL/SQL Selection Structures

27 27  IF/ELSIF: IF condition1 THEN program statements; ELSIF condition2 THEN alternate program statements; ELSIF condition3 THEN alternate program statements;... ELSE alternate program statements; END IF; PL/SQL Selection Structures

28 28 PL/SQL Comparison Operators

29 29 Evaluating NULL Conditions in IF/THEN Structures If a condition evaluates as NULL, then it is FALSE How can a condition evaluate as NULL? It uses a BOOLEAN variable that has not been initialized It uses any other variable that has not been initialized

30 30 Using SQL Commands in PL/SQL Programs

31 31  Loop: repeats one or more program statements multiple times until an exit condition is reached  Pretest loop: exit condition is tested before program statements are executed  Posttest loop: exit condition is tested after program statements are executed PL/SQL Loops

32 32 LOOP program statements IF condition THEN EXIT; END IF; more program statements END LOOP;  LOOP … EXIT Pretest OR Posttest Pretest OR Posttest LOOP … EXIT Loop

33 33 LOOP program statements EXIT WHEN condition; END LOOP; Posttest LOOP … EXIT WHEN Loop

34 34  WHILE … LOOP WHILE condition LOOP program statements END LOOP; Pretest WHILE Loop

35 35 FOR counter_variable IN start_value.. end_value LOOP program statements END LOOP; Preset number of iterations Numeric FOR Loop

36 36 Cursors Pointer to a server memory location Contains information about a SQL command in a PL/SQL program Called the command’s context area

37 37 Cursor context area active set Number of rows processed Parsed command statement Database Server Memory Cursors

38 38  Implicit  Explicit Types of Cursors

39 39  Created automatically every time you use an INSERT, UPDATE, DELETE, or SELECT command  Doesn’t need to be declared  Can be used to assign the output of a SELECT command to one or more PL/SQL variables  Can only be used if query returns one and only one record Implicit Cursors

40 40 SELECT field1, field2, … INTO variable1, variable2, … FROM tablename WHERE search_condition_that_will_ return_a_single_record; Implicit Cursor Syntax

41 41  Must be declared in program DECLARE section  Can be used to assign the output of a SELECT command to one or more PL/SQL variables  Can be used if query returns multiple records or no records Explicit Cursors

42 42  Declare the cursor  Open the cursor  Fetch the cursor result into PL/SQL program variables  Close the cursor Using an Explicit Cursor

43 43 Declaring an Explicit Cursor DECLARE CURSOR cursor_name IS SELECT_statement;

44 44 Opening an Explicit Cursor OPEN cursor_name;

45 45 Fetching Explicit Cursor Records FETCH cursor_name INTO variable_name(s);

46 46 Closing an Explicit Cursor CLOSE cursor_name;

47 47 Processing an Explicit Cursor LOOP..EXIT WHEN approach: OPEN cursor_name; LOOP FETCH cursor_name INTO variable_name(s); EXIT WHEN cursor_name%NOTFOUND: END LOOP; CLOSE cursor_name;

48 48 Processing an Explicit Cursor Cursor FOR Loop approach: FOR variable_name(s) in cursor_name LOOP additional processing statements; END LOOP;

49 49 Using Reference Data Types in Explicit Cursor Processing  Declaring a ROWTYPE reference variable: DECLARE reference_variable_name cursor_name%ROWTYPE;  Referencing a ROWTYPE reference variable: reference_variable_name.database_field_name

50 50 Explicit Cursor Attributes

51 51  Data structure that contains multiple data items that are the same data type  Each table item has a key and a value  Key values do not need to be sequential  Used to create a lookup table that is stored in memory to improve processing speed PL/SQL Tables KeyValue 1Shadow 2Dusty 3Sassy

52 52 PL/SQL Table of Records PL/SQL table that can store multiple values that are referenced by a key Usually used to store database records that need to be processed by a PL/SQL program Improves performance by limiting number of database retrievals

53 53 PL/SQL Exception Handling All error handling statements are placed in the EXCEPTION program block Exception handler: program command that provides information about an error, and suggest correction actions

54 54  Common errors that have been given predefined names that appear instead of error numbers Predefined Exceptions

55 55 Exception Handler Syntax For Predefined Exceptions WHEN exception1_name THEN exception handling statements; WHEN exception2_name THEN exception handling statements; … WHEN OTHERS THEN exception handling statements;

56 56  Less-common errors that have not been given predefined names  ORA- error code appears  Exception handler tests for ORA- error code and provides alternate error message Undefined Exceptions

57 57  Errors that will not cause a run-time error, but will violate business rules  Programmer creates a custom error message User-Defined Exceptions

58 58 Nested PL/SQL Program Blocks An inner program block can be nested within an outer program block DECLARE variable declarations BEGIN program statements EXCEPTION error handling statements END; DECLARE variable declarations BEGIN program statements EXCEPTION error handling statements END; Inner block Outer block

59 59 Exception Handling in Nest Program Blocks If an exception is raised and handled in an inner block, program execution resumes in the outer block

60 60 DECLARE variable declarations BEGIN program statements additional program statements EXCEPTION error handling statements END; Exception Handling in Nested Program Blocks DECLARE exception_A BEGIN RAISE exception_A EXCEPTION exception_A error handler END; Exception is raised and handled in inner block Program execution resumes here

61 61 Exception Handling in Nested Program Blocks Exceptions raised in inner blocks can be handled by exception handlers in outer blocks


Download ppt "1 Introduction to PL/SQL. 2  Procedural programming language  Uses detailed instructions  Processes statements sequentially  Combines SQL commands."

Similar presentations


Ads by Google