1 / 49

Introduction to PL/SQL

Learn about PL/SQL, Oracle's procedural language extension, its benefits, and the different types of PL/SQL blocks. Use iSQL*Plus as a development environment and output messages in PL/SQL.

romanc
Download Presentation

Introduction to PL/SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to PL/SQL

  2. Objectives • After completing this lesson, you should be able to do the following: • Explain the need for PL/SQL • Explain the benefits of PL/SQL • Identify the different types of PL/SQL blocks • Use iSQL*Plus as a development environment for PL/SQL • Output messages in PL/SQL

  3. What Is PL/SQL? • PL/SQL: • Stands for Procedural Language extension to SQL • Is Oracle Corporation’s standard data access language for relational databases • Seamlessly integrates procedural constructs with SQL

  4. About PL/SQL • PL/SQL: • Provides a block structure for executable units of code. Maintenance of code is made easier with such a well-defined structure. • Provides procedural constructs such as: • Variables, constants, and types • Control structures such as conditional statements and loops • Reusable program units that are written once and executed many times

  5. PL/SQL Environment PL/SQL engine procedural Procedural Statement Executor PL/SQLBlock SQL SQL Statement Executor Oracle Database Server

  6. Benefits of PL/SQL • Integration of procedural constructs with SQL • Improved performance SQL 1 SQL 2 … SQL IF...THEN SQL ELSE SQL END IF; SQL

  7. Benefits of PL/SQL • Modularized program development • Integration with Oracle tools • Portability • Exception handling

  8. PL/SQL Block Structure • DECLARE (optional) • Variables, cursors, user-defined exceptions • BEGIN (mandatory) • SQL statements • PL/SQL statements • EXCEPTION (optional) • Actions to performwhen errors occur • END; (mandatory)

  9. Block Types • Anonymous Procedure Function [DECLARE] BEGIN --statements [EXCEPTION] END; PROCEDURE name IS BEGIN --statements [EXCEPTION] END; FUNCTION name RETURN datatype IS BEGIN --statements RETURN value; [EXCEPTION] END;

  10. PL/SQL Programming Environments

  11. PL/SQL Programming Environments • iSQL*Plus

  12. PL/SQL Programming Environments

  13. iSQL*Plus Architecture

  14. Create an Anonymous Block • Type the anonymous block in the SQL*Plus workspace: declare name varchar2(10) ; begin select last_name into name fromemployees where department_id=50; end; /

  15. Execute an Anonymous Block • type / at SQL*PLUS prompt PL\SQL procedure successfully completed.

  16. Test the Output of a PL/SQL Block • Enable output in SQL*Plus with the following command:SET SERVEROUTPUT ON • Use a predefined Oracle package and its procedure: • DBMS_OUTPUT.PUT_LINE SET SERVEROUTPUT ON… DBMS_OUTPUT.PUT_LINE(' The First Name of the Employee is ' || f_name); …

  17. Test the Output of a PL/SQL Block

  18. Summary • In this lesson, you should have learned how to: • Integrate SQL statements with PL/SQL program constructs • Identify the benefits of PL/SQL • Differentiate different PL/SQL block types • Use iSQL*Plus as the programming environment for PL/SQL • Output messages in PL/SQL

  19. Declaring PL/SQL Variables

  20. 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 • List and describe various data types • Identify the benefits of using the %TYPE attribute • Declare, use, and print bind variables

  21. Use of Variables • Variables can be used for: • Temporary storage of data • Manipulation of stored values • Reusability SELECT first_name, department_id INTO emp_fname,emp_deptnoFROM … emp_fname Jennifer emp_deptno 10

  22. Identifiers • Identifiers are used for: • Naming a variable • Providing conventions for variable names • Must start with a letter • Can include letters or numbers • Can include special characters (such as dollar sign, underscore, and pound sign) • Must limit the length to 30 characters • Must not be reserved words

  23. Handling Variables in PL/SQL • Variables are: • Declared and initialized in the declarative section • Used and assigned new values in the executable section • Passed as parameters to PL/SQL subprograms • Used to hold the output of a PL/SQL subprogram

  24. Declaring and Initializing PL/SQL Variables Syntax Examples identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr]; DECLARE emp_hiredate DATE; emp_deptno NUMBER(2) NOT NULL := 10; location VARCHAR2(13) := 'Atlanta'; c_comm CONSTANT NUMBER := 1400;

  25. Declaring and Initializing PL/SQL Variables SET SERVEROUTPUT ON DECLARE Myname VARCHAR2(20); BEGIN DBMS_OUTPUT.PUT_LINE('My name is: '||Myname); Myname := 'John'; DBMS_OUTPUT.PUT_LINE('My name is: '||Myname); END; / 1 SET SERVEROUTPUT ON DECLARE Myname VARCHAR2(20):= 'John'; BEGIN Myname := 'Steven'; DBMS_OUTPUT.PUT_LINE('My name is: '||Myname); END; / 2

  26. Delimiters in String Literals SET SERVEROUTPUT ON DECLARE event VARCHAR2(15); BEGIN event := q'!Father's day!'; DBMS_OUTPUT.PUT_LINE('3rd Sunday in June is : '||event); event := q'[Mother's day]'; DBMS_OUTPUT.PUT_LINE('2nd Sunday in May is : '||event); END; /

  27. Types of Variables • PL/SQL variables: • Scalar • Composite • Reference • Large object (LOB) • Non-PL/SQL variables: Bind variables

  28. Types of Variables TRUE 25-JAN-01 The soul of the lazy man desires, and he has nothing; but the soul of the diligent shall be made rich. 256120.08 Atlanta

  29. The soul of the lazy man desires, and he has nothing; but the soul of the diligent shall be made rich. Scalar Data Types • Hold a single value • Have no internal components TRUE 25-JAN-01 256120.08 Atlanta

  30. Base Scalar Data Types • CHAR [(maximum_length)] • VARCHAR2 (maximum_length) • LONG • LONG RAW • NUMBER [(precision, scale)] • BINARY_INTEGER • PLS_INTEGER • BOOLEAN • BINARY_FLOAT • BINARY_DOUBLE

  31. Base Scalar Data Types • DATE • TIMESTAMP • TIMESTAMP WITH TIME ZONE • TIMESTAMP WITH LOCAL TIME ZONE • INTERVAL YEAR TO MONTH • INTERVAL DAY TO SECOND

  32. Declaring Scalar Variables • Examples DECLARE emp_job VARCHAR2(9); count_loop BINARY_INTEGER := 0; dept_total_sal NUMBER(9,2) := 0; orderdate DATE := SYSDATE + 7; c_tax_rate CONSTANT NUMBER(3,2) := 8.25; valid BOOLEAN NOT NULL := TRUE; ...

  33. %TYPE Attribute • The %TYPE attribute • Is used to declare a variable according to: • A database column definition • Another declared variable • Is prefixed with: • The database table and column • The name of the declared variable

  34. Declaring Variables with the %TYPE Attribute Syntax • Examples identifier table.column_name%TYPE; ... emp_lname employees.last_name%TYPE; balance NUMBER(7,2); min_balance balance%TYPE := 1000; ...

  35. Declaring Boolean Variables • Only the values TRUE, FALSE, and NULL can be assigned to a Boolean variable. • Conditional expressions use the logical operators AND and OR and the unary operator NOT to check the variable values. • The variables always yield TRUE, FALSE, or NULL. • Arithmetic, character, and date expressions can be used to return a Boolean value.

  36. Bind Variables • Bind variables are: • Created in the environment • Also called host variables • Created with the VARIABLE keyword • Used in SQL statements and PL/SQL blocks • Accessed even after the PL/SQL block is executed • Referenced with a preceding colon

  37. Bind variables • Bind variables are used in SQL and PL/SQL statements for holding data or result sets • There is no way to undefine or delete a bind variable in a SQL*Plus session. However, bind variables are not remembered when you exit SQL*Plus.

  38. Printing Bind Variables • Example VARIABLE emp_salary NUMBER BEGIN SELECT salary INTO :emp_salary FROM employees WHERE employee_id = 178; END; / PRINT emp_salary SELECT first_name, last_name FROM employees WHERE salary=:emp_salary;

  39. Printing Bind Variables • Example VARIABLE emp_salary NUMBER SET AUTOPRINT ON BEGIN SELECT salary INTO :emp_salary FROM employees WHERE employee_id = 178; END; /

  40. Substitution Variables • Are used to get user input at run time • Are referenced within a PL/SQL block with a preceding ampersand • Are used to avoid hard-coding values that can be obtained at run time VARIABLE emp_salary NUMBERSET AUTOPRINT ONDECLARE empno NUMBER(6):=&empno;BEGIN SELECT salary INTO :emp_salary FROM employees WHERE employee_id = empno; END;/

  41. Substitution Variables 1 2 3

  42. Prompt for Substitution Variables SET VERIFY OFFVARIABLE emp_salary NUMBERACCEPT empno PROMPT 'Please enter a valid employee number: 'SET AUTOPRINT ONDECLARE empno NUMBER(6):= &empno;BEGIN SELECT salary INTO :emp_salary FROM employees WHERE employee_id = empno;END;/

  43. Using DEFINE for a User Variable • Example SET VERIFY OFF DEFINE lname= Urman DECLARE fname VARCHAR2(25); BEGIN SELECT first_name INTO fname FROM employees WHERE last_name='&lname'; END; /

  44. Showing and Deleting Substitution Variables • -DEFINE • DEFINE variable_name • UNDEFINE • -UNDEFINE variable_name

  45. Substitution variables • Substitution variable references are pre-processed and substituted • before the command is otherwise parsed and executed. • For each statement SQL*Plus will: • Loop for each "&" and "&&" variable reference • If the variable is defined Replace the variable reference with the value else Prompt for a value Replace the variable reference with the value If the variable is prefixed with "&&" then define (i.e. store) the variable for future use • 2. Execute the statement • Step 1 happens inside the SQL*Plus client tool. SQL*Plus then sends the final • statement to the database engine where step 2 occurs

  46. Substitution variables • It is not possible to repeatedly prompt in a PL/SQL loop. This example prompts once and the entered value is substituted in the script text. The resulting script is then sent to the database engine for execution. The same entered value is stored five times in the table: • begin • for i in 1 .. 5 loop • insert into mytable values (&myv); • end loop; • end;

  47. Composite Data Types TRUE 23-DEC-98 ATLANTA PL/SQL table structure PL/SQL table structure 1 SMITH 2 JONES 3 NANCY 4 TIM 1 5000 2 2345 3 12 4 3456 VARCHAR2 NUMBER PLS_INTEGER PLS_INTEGER

  48. LOB Data Type Variables Book (CLOB) Photo (BLOB) Movie (BFILE)

  49. Summary • In this lesson, you should have learned how to: • Recognize valid and invalid identifiers • Declare variables in the declarative section of a PL/SQL block • Initialize variables and use them in the executable section • Differentiate between scalar and composite data types • Use the %TYPE attribute • Use bind variables

More Related