Program with PL/SQL. Interacting with the Oracle Server.

Slides:



Advertisements
Similar presentations
8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved. Using Explicit Cursors.
Advertisements

PL/SQL.
Manipulating Data Schedule: Timing Topic 60 minutes Lecture
ORACLE TRANSACTIONS A transaction begins with the first executable SQL statement after a commit, rollback or connection made to the Oracle engine. All.
9-1 Copyright  Oracle Corporation, All rights reserved. Data Manipulation Language A DML statement is executed when you: – Add new rows to a table.
Murali Mani Persistent Stored Modules (Stored Procedures) : PSM.
Chapter 4B: More Advanced PL/SQL Programming
Copyright  Oracle Corporation, All rights reserved. 9 Manipulating Data: INSERT, UPDATE, DELETE.
Programming in Oracle with PL/SQL
Chapter 5 Data Manipulation and Transaction Control Oracle 10g: SQL
1 PL/SQL programming Procedures and Cursors Lecture 1 Akhtar Ali.
Cursors in Pl/SQL Database 1. Practice. Sample Database The schema of the sample database is the following: Drinkers (name, occupation, birthday, salary)
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.
Oracle10g Developer: PL/SQL Programming1 Objectives Manipulating data with cursors Managing errors with exception handlers Addressing exception-handling.
Lecture 4 Introduction to PL/SQL Procedures & Cursors.
EE Copyright س Oracle Corporation, All rights reserved. ® Review of PL/SQL.
4-1 Copyright  Oracle Corporation, All rights reserved. Data Manipulation Language (DML)
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.
1 JumpStart PL/SQL Wang Hao. 2 Outline PL/SQL Programming SQL*Plus and SQL commands.
Interacting With The Oracle Server. Objectives After completing this lesson, you should be able to do the following: Write a successful SELECT statement.
PL/SQL CSE2132 Database Systems Week 9 Lecture PL/SQL and Programming in Oracle - 2.
Overview · What is PL/SQL · Advantages of PL/SQL · Basic Structure of a PL/SQL Block · Procedure · Function · Anonymous Block · Types of Block · Declaring.
1 Theory, Practice & Methodology of Relational Database Design and Programming Copyright © Ellis Cohen Cursors These slides are licensed under.
1. 1. Which type of argument passes a value from a procedure to the calling program? A. VARCHAR2 B. BOOLEAN C. OUT D. IN 2.
PL/SQL Cursors Session - II. Attributes Attributes %TYPE %ROWTYPE % Found % NotFound % RowCount % IsOPen %TYPE %ROWTYPE % Found % NotFound % RowCount.
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.
L/O/G/O Working with Composite Data Types. Objectives After completing this lesson, you should be able to do the following: –Create user-defined PL/SQL.
Objectives After completing this lesson, you should be able to do the following: Describe each data manipulation language (DML) statement Insert rows.
1 CursorsCursors. 2 SQL Cursor A cursor is a private SQL work area. A cursor is a private SQL work area. There are two types of cursors: There are two.
PL/SQL Block Structure DECLARE - Optional Variables, cursors, user-defined exceptions BEGIN - Mandatory SQL Statements PL/SQL Statements EXCEPTIONS - Optional.
Manipulating Data in PL/SQL. 2 home back first prev next last What Will I Learn? Construct and execute PL/SQL statements that manipulate data with DML.
Trigger Oracle PL/SQL. Triggers Associated with a particular table Associated with a particular table Automatically executed when a particular event occurs.
School of Computing and Management Sciences © Sheffield Hallam University SQL is non-procedural –designed to be relatively approachable to non- programmers.
Copyright  Oracle Corporation, All rights reserved. 18 Interacting with the Oracle Server.
Using SQL in PL/SQL ITEC 224 Database Programming.
Chapter Sixteen Cursors Objective: – Introduction to cursors – Use of cursors in a database record – Implicit & explicit cursors – Cursors & loops – Cursors.
Manipulating Data. Objectives After completing this lesson, you should be able to do the following: Describe each DML statement Insert rows into a table.
9 Manipulating Data. 9-2 Objectives At the end of this lesson, you should be able to: Describe each DML statement Insert rows into a table Update rows.
ITEC 224 Database Programming PL/SQL Lab Cursors.
Chapter 16 Cursors and Exceptions. Chapter Objectives  Determine when an explicit cursor is required  Declare, open, and close an explicit cursor 
Introduction to Explicit Cursors. 2 home back first prev next last What Will I Learn? Distinguish between an implicit and an explicit cursor Describe.
Retrieving Data in PL/SQL. 2 home back first prev next last What Will I Learn? In this lesson, you will learn to: –Recognize the SQL statements that can.
implicit and an explicit cursor
1 PL/SQL Part C Scope and Interacting with the Oracle Server.
Introduction to PL/SQL Francis Thottungal. The outline The basic PL/SQL code structure is : DECLARE -- optional, which declares and define variables,
Program with PL/SQL Lesson 3. Interacting with the Oracle Server.
Oracle 11g: SQL Chapter 5 Data Manipulation and Transaction Control.
Insert, update, delete TCL. Data Manipulation Language – A DML statement is executed when you: Add new rows to a table Modify existing rows in a table.
7 Copyright © 2004, Oracle. All rights reserved. Using Explicit Cursors.
PL/SQL Part B.
PL/SQL CURSORS.
ITEC 224 Database Programming
CS322: Database Systems PL/ SQL PL/SQL by Ivan Bayross.
CS322: Database Systems PL/ SQL PL/SQL by Ivan Bayross.
Interacting with the Oracle8 Server
Interacting with the Oracle Server
Interacting with the Oracle Server
Interacting with the Oracle Server
Interacting with the Oracle Server
Cursors ITEC 224 Database Programming PL/SQL Lab.
Chapter Eighteen Cursors
Introduction to Oracle9i: SQL
Database Management Systems 2
Interacting with the Oracle Server
Database Management Systems 2
Database Management Systems 2
Chapter 2 Handling Data in PL/SQL Blocks Oracle9i Developer:
Cursors.
Database Programming Using Oracle 11g
Presentation transcript:

Program with PL/SQL

Interacting with the Oracle Server

SQL Statements in PL/SQL Extract a row of data from the database by using the SELECT command Make changes to rows in the database by using DML commands Control a transaction with the COMMIT, ROLLBACK, or SAVEPOINT command Determine DML outcome with implicit cursor attributes

SELECT Statements in PL/SQL Syntax : SELECT select_list INTO (variable_name[, variable_name] … | record_name} FROM table [WHERE condition]

SELECT Statements in PL/SQL The INTO clause is required. Queries must return one and only one row Example DECLARE v_deptnoNUMBER(4); v_loc VARCHAR2(15); BEGIN SELECTdeptno, loc INTOv_deptno, v_loc FROMdept WHEREdname = 'SALES';... END;

Retrieving Data in PL/SQL Return the sum of the salaries for all employees in the specified department. Example DECLARE v_sum_sal emp.sal%TYPE; v_deptno NUMBER NOT NULL := 10; BEGIN SELECTSUM(sal) -- group function INTOv_sum_sal FROMemp WHEREdeptno = v_deptno; DBMS_OUTPUT.PUT_LINE(‘The Sum Salary is ‘ || to_char(v_sum_sal));) END;

Manipulating Data Using PL/SQL Make changes to database tables by using DML commands: –INSERT –UPDATE –DELETE –MERGE

Inserting Data Add new employee information to the EMP table. Example BEGIN INSERT INTO emp(empno, ename, job, deptno) VALUES(empno_sequence.NEXTVAL, 'HARDING', 'CLERK', 10); END;

Updating Data Increase the salary of all employees in the EMP table who are Analysts. Example DECLARE v_sal_increase emp.sal%TYPE := 2000; BEGIN UPDATEemp SETsal = sal + v_sal_increase WHEREjob = 'ANALYST'; END;

Deleting Data Delete rows that belong to department 10 from the EMP table. Example DECLARE v_deptno emp.deptno%TYPE := 10; BEGIN DELETE FROM emp WHERE deptno = v_deptno; END;

Naming Conventions Use a naming convention to avoid ambiguity in the WHERE clause Database columns and identifiers should have distinct names Syntax errors can arise because PL/SQL checks the database first or a column in the table The names of local variables and formal parameters take precedence over the names of database tables The names of database table columns take precedence over the names of local variables

Transaction Control Statements –Initiate a transaction with the first DML command to follow a COMMIT or ROLLBACK. –Use COMMIT and ROLLBACK SQL statements to terminate a transaction explicitly.

Cursors

About Cursors A cursor is a private SQL work area There are two types of cursors: –Implicit cursor –Explicit cursor The Oracle server uses implicit cursors to parse and execute your SQL statements Explicit cursors are explicitly declared by the programmer

Explicit Cursor Functions Can process beyond the first row returned by the query, row by row Keep track of which row is currently being processed Allow the programmer to manually control explicit cursors in the PL/SQL block

Controlling Explicit Cursors DECLARE OPEN FETCH EMPTY? CLOSE Create a named SQL area Identify the active set Load the current row into variables Test for existing rows Return to FETCH if rows are found Release the active set Yes

Declaring the Cursor Syntax: Do not include the INTO clause in the cursor declaration If processing rows in a specific sequence is required, use the ORDER BY clause in the query CURSOR cursor_name IS select_statement;

Opening the Cursor Syntax: Open the cursor to execute the query and identify the active set If the query returns no rows, no exception is raised Use cursor attributes to test the outcome after the fetch OPEN cursor_name;

Fetching Data from the Cursor Syntax: Retrieve the current row values into variables Include the same number of variables Match each variable to correspond to the columns positionally Test to see whether the cursor contains rows FETCH cursor_name INTO [variable1, variable2,...] | record_name];

Closing the Cursor Syntax: Close the cursor after completing the processing of the rows Reopen the cursor, if required Do not attempt to fetch data from a cursor after it has been closed CLOSE cursor_name;

Implicit Cursor Attributes AttributeDescription SQL%ROWCOUNT Number of rows affected by the most recent SQL statement (an integer value) SQL%FOUND Boolean attribute that evaluates to TRUE if the most recent SQL statement affects one or more rows SQL%NOTFOUND Boolean attribute that evaluates to TRUE if the most recent SQL statement doses not affects any rows SQL%ISOPEN Always evaluates to FALSE because PL/SQL closes implicit cursors immediately after they are executed

Explicit Cursor Attributes AttributeTypeDescription %ROWCOUN T NumberEvaluates to the total number of rows returned so far %FOUND Boolean Evaluates to TRUE if the most recent fetch return a row; complement of %NOTFOUND %NOTFOUN D Boolean Evaluates to TRUE if the most recent fetch does not return a row %ISOPEN Boolean Evaluates to TRUE if the cursor is open

Controlling Multiple Fetches Process several rows from an explicit cursor using a loop Fetch a row with each iteration Use explicit cursor attributes to test the success of each fetch

Cursors and Records Process the rows of active set by fetching values into PL/SQL RECORD DECLARE CURSOR emp_cursor IS SELECT employee_id, last_name FROM employees; emp_recordemp_cursor%ROWTYPE; BEGIN OPEN emp_cursor; LOOP FETCH emp_cursor INTO emp_record;...

Cursor FOR Loops Syntax: The cursor FOR loop is a shortcut to process explicit cursors Implicit open, fetch, exit, and close occur The record is implicitly declared FOR record_name IN cusror_name LOOP statement1; statement2;... END LOOP;

Cursor FOR Loops Using Subquery No need to declare the cursor Example: BEGIN FOR emp_record IN (SELECT last_name, department_id FROM employees) LOOP IF emp_record.department_id = 80 THEN... END IF; END LOOP; END;

Cursors with Parameters Syntax: Pass parameter values to a cursor when the cursor is opened and the query is executed Open an explicit cursor several times with a different active set each time CURSOR cursor_name [(parameter_name datatype,...)] IS select_statement; OPEN cursor_name(parameter_value,...);

The FOR UPDATE Clause Syntax: Use explicit locking to deny access for the duration of a transaction Lock the rows before the update or delete SELECT... FROM... FOR UPDATE [OF column_reference] [NOWAIT];

The WHERE CURRENT OF Clause Syntax: Use cursors to update or delete the current row Include the FOR UPDATE clause in the cursor query to lock the row first Use the WHERE CURRENT OF clause to reference the current row from an explicit cursor WHERE CURRENT OF cursor;

Cursors with Subqueries Example: DECLARE CURSOR my_cursor IS SELECT t1.department_id, t1.department_name, t2.staff FROM departments t1, (SELECT department_id, COUNT(*) AS STAFF FROM employees GROUP BY department_id) t2 WHERE t1.department_id = t2.department_id AND t2.staff >= 3;...