AN INTRODUCTION TO PL/SQL Mehdi Azarmi 1. Introduction PL/SQL is Oracle's procedural language extension to SQL, the non-procedural relational database.

Slides:



Advertisements
Similar presentations
PL/SQL.
Advertisements

BD05/06 PL/SQL  Introduction  Structure of a block  Variables and types  Accessing the database  Control flow  Cursors  Exceptions  Procedures.
H.Melikian1 PLSQL Dr.Hayk Melikyan Departmen of Mathematics and CS
PL/SQL. Introduction to PL/SQL PL/SQL is the procedure extension to Oracle SQL. It is used to access an Oracle database from various environments (e.g.
SQL*PLUS, PLSQL and SQLLDR Ali Obaidi. SQL Advantages High level – Builds on relational algebra and calculus – Powerful operations – Enables automatic.
PL/SQL.
Murali Mani Persistent Stored Modules (Stored Procedures) : PSM.
Library example CREATE TABLE books ( isbn VARCHAR2(13) PRIMARY KEY, title VARCHAR2(200), summary VARCHAR2(2000), author VARCHAR2(200), date_published DATE,
PL/SQL (Procedural Language extensions to SQL) Prepared by: Manoj Kathpalia Edited by: M V Ramakrishna.
Lecture-5 Though SQL is the natural language of the DBA, it suffers from various inherent disadvantages, when used as a conventional programming language.
Triggers The different types of integrity constraints discussed so far provide a declarative mechanism to associate “simple” conditions with a table such.
Chapter 4B: More Advanced PL/SQL Programming
Using Oracle PL/SQL PL/SQL stands for Procedural Language/SQL. PL/SQL extends SQL by adding constructs found in procedural languages, resulting in a structural.
PL/SQL Agenda: Basic PL/SQL block structure
Oracle PL/SQL Eyad Husni Elshami. Why PL/SQL Block Structures: – PL/SQL consists of blocks of code, which can be nested within each other. Each block.
Introduction to PL/SQL
Introduction to PL/SQL Lecture 0 – Self Study Akhtar Ali.
Objectives Why PL-SQL ? Language features
Advanced SQL: Stored Procedures Instructor: Mohamed Eltabakh 1.
Introduction to PL/SQL Chapter 9. Objectives Explain the need for PL/SQL Explain the benefits of PL/SQL Identify the different types of PL/SQL blocks.
Dr. James Dullea, CSC8490 Introduction to PL/SQLSlide 1 of 36 7From Prof. Dullea CSC8490 Introduction to PL/SQL Module 01-9 Revised: June 12, 2005 Dr.
Introduction to PL/SQL. Procedural Language extension for SQL Oracle Proprietary 3GL Capabilities Integration of SQL Portable within Oracle data bases.
ORACLE ONLINE TRAINING Contact our Support Team : SOFTNSOL India: Skype id : softnsoltrainings id:
Session Title: Using SQL and PL/SQL for Queries and Reporting Presented By: Stephen Frederic Institution: IHL September 16, 2013.
Bordoloi and Bock CURSORS. Bordoloi and Bock CURSOR MANIPULATION To process an SQL statement, ORACLE needs to create an area of memory known as the context.
PL / SQL P rocedural L anguage / S tructured Q uery L anguage Chapter 7 in Lab Reference.
Lecture 4 PL/SQL language. PL/SQL – procedural SQL Allows combining procedural and SQL code PL/SQL code is compiled, including SQL commands PL/SQL code.
ISYS 365 – SQL*Plus Environment. 2 Agenda What is SQL*Plus? Command Line Editor Useful SQL*Plus Commands Useful System Tables What is PL/SQL? PL/SQL Constructs.
INTRODUCTION TO PL/SQL. Class Agenda Introduction Introduction to PL/SQL Declaring PL/SQL Variable Creating the Executable Section Interacting with the.
Overview · What is PL/SQL · Advantages of PL/SQL · Basic Structure of a PL/SQL Block · Procedure · Function · Anonymous Block · Types of Block · Declaring.
PL SQL Block Structures. What is PL SQL A good way to get acquainted with PL/SQL is to look at a sample program. PL/SQL combines the data manipulating.
Session Title: Using SQL and PL/SQL for Queries and Reporting Presented By: Stephen Frederic Institution: IHL September 16, 2014.
Advanced SQL: Cursors & Stored Procedures
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
CS178 Database Management PL/SQL session 8 References: ORACLE 9i PROGRAMMING A Primer Rajshekhar Sunderraman.
PL / SQL By Mohammed Baihan. What is PL/SQL? PL/SQL stands for Procedural Language extension of SQL. PL/SQL is a combination of SQL along with the procedural.
Programmatic SQL Shaista Khan CS 157B. Topic Embedded SQL statements in high-level programming languages.
CIS4368: Advanced DatabaseSlide # 1 PL/SQL Dr. Peeter KirsSpring, 2003 PL/SQL.
BIS Database Systems School of Management, Business Information Systems, Assumption University A.Thanop Somprasong Chapter # 8 Advanced SQL.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
Database Management COP4540, SCS, FIU Oracle PL/SQL (Ch 10.5)
Advanced SQL: Triggers & Assertions
Chapter 9: Advanced SQL and PL/SQL Guide to Oracle 10g.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
Dynamic SQL. 2 home back first prev next last What Will I Learn? Recall the stages through which all SQL statements pass Describe the reasons for using.
A Guide to SQL, Eighth Edition Chapter Eight SQL Functions and Procedures.
implicit and an explicit cursor
Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha Function, Trigger used in PosgreSQL.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
Advanced SQL: Cursors & Stored Procedures Instructor: Mohamed Eltabakh 1.
Kingdom of Saudi Arabia Ministry of Higher Education Al-Imam Muhammad Ibn Saud Islamic University College of Computer and Information Sciences Overview.
Introduction to PL/SQL N. Dimililer. About PL/SQL –PL/SQL is an extension to SQL with design features of programming languages. –Data manipulation and.
1 Introduction to Database Systems, CS420 SQL Persistent Stored Modules (PSM) – Stored Procedure.
CS422 Principles of Database Systems Oracle PL/SQL Chengyu Sun California State University, Los Angeles.
CS422 Principles of Database Systems Stored Procedures and Triggers Chengyu Sun California State University, Los Angeles.
1 Copyright © 2004, Oracle. All rights reserved. PL/SQL Programming Concepts: Review.
Interacting with the Oracle Server
PL/SQL.
UNIT - V STORED PROCEDURE.
SQL PL/SQL Presented by: Dr. Samir Tartir
PL/SQL Scripting in Oracle:
Stored Procedure used in PosgreSQL
Chapter 2 Handling Data in PL/SQL Blocks Oracle9i Developer:
Procedures Organized by Farrokh Alemi, Ph.D. Narrated by Yara Alemi
PL/SQL week10.
ORACLE.
Chapter 8 Advanced SQL.
PL/SQL Declaring Variables.
Chapter 8 Advanced SQL Pearson Education © 2009.
Presentation transcript:

AN INTRODUCTION TO PL/SQL Mehdi Azarmi 1

Introduction PL/SQL is Oracle's procedural language extension to SQL, the non-procedural relational database language. Combines power and flexibility of SQL (4GL) with procedural constructs of a 3GL Extends SQL by adding Variables and types Control Structures (conditional, loops) Procedures and functions Exception handling … 2

Block Definition Basic unit of PL/SQL is a block Three possible sections of a block Declarative section Executable section Exception handling A block performs a logical unit of work in the program Blocks can be nested 3

Block Structure DECLARE /* Declarative section: variables, types, and local subprograms. */ BEGIN /* Executable section: procedural and SQL statements go here. */ /* This is the only section of the block that is required. */ EXCEPTION /* Exception handling section: error handling statements go here. */ END; 4

Executable Section The only required section Contains constructs such as assignments, branches, loops, procedure calls, and triggers SELECT, INSERT, UPDATE, DELETE are supported the SELECT statement has a special form in which a single tuple is placed in variables Data definition statements like CREATE, DROP, or ALTER are not allowed. PL/SQL is not case sensitive. C style comments (/*... */) may be used. 5

Variables and Types Declared in the declaration section Variables have a specific type associated with them Types One of the types used by SQL for database columns A generic type used in PL/SQL Most useful is NUMBER (can hold either an integer or a real number) BOOLEAN (but not supported as a type for database columns) Declared to be the same as the type of some database column It is essential that the variable have the same type as the relation column. use the %TYPE operator DECLARE myBeer Beers.name%TYPE; A variable may also have a type that is a record with several fields beerTuple Beers%ROWTYPE; /* (name, manufacture)*/ 6

Variables - Example DECLARE a NUMBER := 3; BEGIN a := a + 1; END;. run; The initial value of any variable, regardless of its type, is NULL. This program has no effect when run, because there are no changes to the database. To execute the program 7

Example CREATE TABLE T1( e INTEGER, f INTEGER ); DELETE FROM T1; INSERT INTO T1 VALUES(1, 3); INSERT INTO T1 VALUES(2, 4); /* Above is plain SQL; below is the PL/SQL program. */ DECLARE a NUMBER; b NUMBER; BEGIN SELECT e,f INTO a,b FROM T1 WHERE e>1; INSERT INTO T1 VALUES(b,a); END;. run; There is only one tuple of T1 that has first component greater than 1, (2,4). Therefore, INSERT statement inserts (4,2) into T1. The SELECT statement in PL/SQL only works if the result of the query contains a single tuple If the query returns more than one tuple, you need to use a cursor 8

CONTROL FLOW IN PL/SQL 9

IF Statement An IF statement looks like: IF THEN ELSE END IF; The ELSE part is optional If you want a multiway branch, use: IF THEN … ELSIF THEN …... ELSIF THEN … ELSE … END IF; 10

IF - Example DECLARE a NUMBER; b NUMBER; BEGIN SELECT e,f INTO a,b FROM T1 WHERE e>1; IF b=1 THEN INSERT INTO T1 VALUES(b,a); ELSE INSERT INTO T1 VALUES(b+10,a+10); END IF; END;. run; 11

IF - Example 2 DECLARE TotalStudents NUMBER; BEGIN SELECT COUNT(*) INTO TotalStudents FROM students; …  IF TotalStudents = 0 THEN INSERT INTO temp_table (char_col) VALUES ('There are no students registered'); ELSIF TotalStudents < 5 THEN INSERT INTO temp_table (char_col) VALUES ('There are only a few students registered'); ELSIF TotalStudents < 10 THEN INSERT INTO temp_table (char_col) VALUES ('There are a little more students registered'); ELSE INSERT INTO temp_table (char_col) VALUES ('There are many students registered'); END IF; END; / 12

IF and UPDATE - Example DECLARE NewMajor VARCHAR2(10) := ’CS'; FirstName VARCHAR2(10) := ’Mehdi'; LastName VARCHAR2(10) := ’Azarmi'; BEGIN UPDATE students SET major = NewMajor WHERE first_name = FirstName AND last_name = LastName; IF SQL%NOTFOUND THEN INSERT INTO students (ID, first_name, last_name, major) VALUES (student_sequence.NEXTVAL, FirstName, LastName, NewMajor); END IF; END; / 13

Loops A loop allows execution of a set of statements repeatedly Types of loops Simple loop Numeric For loop While loop Loops are created with the following: LOOP /* A list of statements. */ END LOOP; At least one of the statements in should be an EXIT statement of the form EXIT WHEN ; 14

LOOP - Example DECLARE i NUMBER := 1; BEGIN LOOP INSERT INTO T1 VALUES(i,i); i := i+1; EXIT WHEN i>100; END LOOP; END;. run; 15

FOR and WHILE Loops A WHILE loop can be formed with WHILE LOOP END LOOP; A simple FOR loop can be formed with: FOR IN.. LOOP END LOOP; Here, can be any variable; it is local to the for-loop and need not be declared. Also, and are constants. 16

FOR - Example BEGIN FOR LoopCounter IN LOOP INSERT INTO temp_table (num_col) VALUES (LoopCounter); END LOOP; END; / 17

Cursors the SELECT statement in PL/SQL only works if the result of the query contains a single tuple If the query returns more than one tuple, or you want to manipulate a relation with more than one row, you need to use a cursor A cursor creates a named context area as a result of executing an associated SQL statement Permits the program to step through the multiple rows displayed by an SQL statement 18

1) DECLARE /* Output variables to hold the result of the query: */ 2) a T1.e%TYPE; 3) b T1.f%TYPE; /* Cursor declaration: */ 4) CURSOR T1Cursor IS 5) SELECT e, f 6) FROM T1 7) WHERE e < f 8) FOR UPDATE; 9) BEGIN 10) OPEN T1Cursor; …  Next page 19 CURSOR – Example part1

CURSOR– Example part ) LOOP /* Retrieve each row of the result of the above query into PL/SQL variables: */ 12) FETCH T1Cursor INTO a, b; /* If there are no more rows to fetch, exit the loop: */ 13) EXIT WHEN T1Cursor%NOTFOUND; /* Delete the current tuple: */ 14) DELETE FROM T1 WHERE CURRENT OF T1Cursor; /* Insert the reverse tuple: */ 15) INSERT INTO T1 VALUES(b, a); 16) END LOOP; /* Free cursor used by the query. */ 17) CLOSE T1Cursor; 18) END; 19). 20) run;

Procedure PROCEDURE and FUNCTIONS Parameters Mode of operation: IN (read-only) OUT (write-only) INOUT (read and write) Type the type specifier in a parameter declaration must be unconstrained. Example: CHAR(10) and VARCHAR(20) are illegal CHAR or VARCHAR should be used instead. 21

PROCEDURE - Template CREATE OR REPLACE PROCEDURE PROCNAME(PARAMETERS) AS BEGIN END;. run; The run at the end runs the statement that creates the procedure; it does not execute the procedure. To execute the procedure, use another PL/SQL statement, in which the procedure is invoked as an executable statement. For example: BEGIN addtuple1(99); END;. Run; 22

PROCEDURE – Example 1 CREATE TABLE T2 ( a INTEGER, b CHAR(10) ); CREATE PROCEDURE addtuple2( x IN T2.a%TYPE, y IN T2.b%TYPE) AS BEGIN INSERT INTO T2(a, b) VALUES(x, y); END addtuple2;. run; Now, to add a tuple (10, 'abc') to T2: BEGIN addtuple2(10, 'abc'); END;. run; 23

PROCEDURE – Example 2 CREATE TABLE T3 ( a INTEGER, b INTEGER ); CREATE PROCEDURE addtuple3(a NUMBER, b OUT NUMBER) AS BEGIN b := 4; INSERT INTO T3 VALUES(a, b); END;. Run; DECLARE v NUMBER; BEGIN addtuple3(10, v); /* second parameter should be an lvalue*/ END;. run; 24

PROCEDURE – Final Notes We can also write functions instead of procedures. In a function declaration, we follow the parameter list by RETURN and the type of the return value: CREATE FUNCTION ( ) RETURN AS... In the body of the function definition, "RETURN ;" exits from the function and returns the value of. To find out what procedures and functions you have created, use the following SQL query: select object_type, object_name from user_objects where object_type = 'PROCEDURE’ or object_type = 'FUNCTION’; To drop a stored procedure/function: drop procedure ; drop function ; 25

Printing Always use the following line (setting output buffer) at the beginning of your SQL file: set serveroutput on size Printing a line: dbms_output.put_line(VAR1|| '. ' || VAR2); You may declare and use a bind variable to print a local variable VARIABLE x NUMBER BEGIN :x := 1; END;. run; PRINT :x; 26

Debugging PL/SQL does not always tell you about compilation errors. Instead, it gives you a cryptic message such as: "procedure created with compilation errors". If you don't see what is wrong immediately, try issuing the command show errors procedure ; Alternatively, you can type, SHO ERR (short for SHOW ERRORS) to see the most recent compilation error. Note that the location of the error given as part of the error message is not always accurate! 27

Performance of PL/SQL SQL results in many network trips, one for each SQL statement PL/SQL permits several SQL statements to be bundled into a single block Results in fewer calls to database Less network traffic faster response time 28

References plsql.html plsql.html Oracle PL/SQL Programming: Covers Versions Through Oracle Database 11g Release 2, by Steven Feuerstein and Bill Pribyl (Oct 1, 2009) 29