Presentation is loading. Please wait.

Presentation is loading. Please wait.

PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 3 Handling Data in PL/SQL Blocks.

Similar presentations


Presentation on theme: "PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 3 Handling Data in PL/SQL Blocks."— Presentation transcript:

1 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 3 Handling Data in PL/SQL Blocks

2 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming2 Chapter Objectives After completing this lesson, you should be able to understand: –SQL queries within PL/SQL –Host or bind variables –The %TYPE attribute –Expanding block processing to include queries and control structures

3 PL/SQLPL/SQL Chapter Objectives (continued) After completing this lesson, you should be able to understand (continued): –Embedding DML statements within PL/SQL –Composite data types –Creating collections –Understanding the GOTO statement Oracle10g Developer: PL/SQL Programming3

4 PL/SQLPL/SQL 4 Brewbean’s Challenge Consider actions needed upon check out

5 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming5 Include SQL within a Block Data query needs to identify if the customer has a saved basket

6 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming6 Include SQL within a Block (continued) SQL statements can be embedded into the executable area of a PL/SQL block SELECT statements are embedded to query needed data An INTO clause is added to a SELECT statement to move data retrieved into variables

7 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming7 Include SQL within a Block (continued) SQL Query – add INTO clause Assignment Statement

8 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming8 Executing a Block with Errors Common Errors –Use = rather than := –Not declaring a variable –Misspelling a variable name –Not ending a statement with ; –No data returned from a SELECT statement

9 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming9 Executing a Block with Errors (continued) Not closing a statement with ;

10 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming10 Host or Bind Variables Reference host variables with a preceding colon in PL/SQL BEGIN :g_shopper := 25; END; / WHERE idShopper = :g_shopper AND orderplaced = 0; Create host variable Reference host variable

11 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming11 %TYPE Attribute Use in variable declaration to provide data type based on a table column Ideal for declaring variables that will hold data from the database Minimizes maintenance by avoiding program changes to reflect database column changes Called an anchored data type lv_basket_num bb_basket.idBasket%TYPE;

12 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming12 Data Retrieval with Decision Structures

13 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming13 IF Statement Example

14 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming14 Including DML DML statements can be embedded into PL/SQL blocks to accomplish data changes DML includes INSERT, UPDATE, and DELETE statements

15 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming15 Including DML (continued) Add a new shopper - INSERT

16 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming16 Composite Data Types Stores multiple values of different data types as one unit Record – can hold one row of data Table of records – can hold multiple rows of data

17 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming17 Record Data Type DECLARE TYPE type_basket IS RECORD ( basket bb_basket.idBasket%TYPE, created bb_basket.dtcreated%TYPE, qty bb_basket.quantity%TYPE, sub bb_basket.subtotal%TYPE); rec_basket type_basket; lv_days_num NUMBER(3); lv_shopper_num NUMBER(3) := 25; BEGIN SELECT idBasket, dtcreated, quantity, subtotal INTO rec_basket FROM bb_basket WHERE idShopper = lv_shopper_num AND orderplaced = 0; lv_days_num := SYSDATE - rec_basket.created; END;

18 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming18 %ROWTYPE Attribute Create record structure based on table structure DECLARE rec_shopper bb_shopper%ROWTYPE; BEGIN SELECT * INTO rec_shopper FROM bb_shopper WHERE idshopper = :g_shopper; DBMS_OUTPUT.PUT_LINE(rec_shopper.lastname); DBMS_OUTPUT.PUT_LINE(rec_shopper.address); DBMS_OUTPUT.PUT_LINE(rec_shopper.email); END;

19 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming19 Table of Records

20 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming20 Collections Store multiple values of the same data type Similar to arrays in other languages Index-by Tables – handle many rows of one field One- dimensional Can only have one column UnconstrainedRows added dynamically as needed SparseA row only exists when a value is assigned; rows do not have to be assigned sequentially HomogeneousAll elements have same data type IndexedInteger index serves as primary key of the table

21 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming21 Index-by Table Attributes Attribute Name Value Data typeDescription COUNTNUMBERNumber of rows in the table DELETENoneRemoves a row from the table EXISTSBOOLEANTRUE if specified row does exist FIRSTBINARY_INTEGERIndex for the first row in the table LASTBINARY_INTEGERIndex for the last row in the table NEXTBINARY_INTEGERIndex for the next row in the table after the row specified PRIORBINARY_INTEGERIndex for the row in the table before the row specified

22 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming22 Index-by Table Example Host variables declaration and initialization

23 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming23 Index-by Table Example Put host variable values into the table variable A FOR loop adds all the sample measurements that have been entered into the table variable lv_avg_num calculates the Average measurement Index-by table data type declaration Index-by table variable declaration

24 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming24 GOTO Statement Jumping control that instructs the program to move to another area of code to continue processing Most developers discourage the use of GOTO as it complicates the flow of execution

25 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming25 Summary SQL queries and DML statements can be embedded into a block An INTO clause must be added to a SELECT The %TYPE attribute is used to use a column data type Composite data types can hold multiple values in a single variable

26 PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming26 Summary (continued) A record can hold a row of data A table of records can hold multiple rows of data The %ROWTYPE attribute can be used to declare a data type based on a table’s structure An index-by table is a collection similar to arrays The GOTO statement enables execution to jump to specific portions of code


Download ppt "PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 3 Handling Data in PL/SQL Blocks."

Similar presentations


Ads by Google