Date post: | 21-Dec-2015 |
Category: |
Documents |
View: | 250 times |
Download: | 0 times |
Objectives
Embed SQL commands in PL/SQL programs
Retrieve single rows using embedded SQL
Update a table using embedded INSERT, UPDATE, and DELETE commands
Use cursors to retrieve multiple rows in embedded SQL
A Guide to SQL, Seventh Edition
Objectives
Update a database using cursors
Manage errors in programs containing embedded SQL commands
Use SQL in a language that does not support embedded SQL commands
A Guide to SQL, Seventh Edition
Introduction
A procedural language requires a step-by-step process to accomplish tasks
You can embed, or include, SQL commands in the programs using procedural languages
Useful when needed tasks are beyond the capabilities of SQL
A Guide to SQL, Seventh Edition
Using Prompt Variables
Sources of input for SQL commands
Onscreen form
Passed as arguments from procedure
Prompt variables
Prompt variables are when user is prompted to enter a value when the program is run
Precede the variable with an “&”
A Guide to SQL, Seventh Edition
PL/SQL Programs
Embed SQL commands in PL/SQL programs
Create and save the programs as script files
Run the script files to run the programs
A Guide to SQL, Seventh Edition
Retrieving a Single Row and Column
To place the results of a command in a variable, use the INTO clause
SELECT LAST_NAMEINTO I_LAST_NAMEFROM REPWHERE REP_NUM = ‘&I_REP_NUM;’
A Guide to SQL, Seventh Edition
Retrieving a Single Row and Column
When executed, user will be prompted for a value for I_REP_NUM
That value will be used to retrieve the last name of the sales rep whose number equals this value
The results will be placed in the variable I_LAST_NAME
This variable can be used in another program
A Guide to SQL, Seventh Edition
Retrieving a Single Row and Column
Procedure uses one argument and produces a single line of text containing this argument output
To see the output, execute the command
SET SERVEROUTPUT ON
Include this command in the PL/SQL program to ensure it will be executed
A Guide to SQL, Seventh Edition
Retrieving a Single Row and Column
Procedural code are commands that specify exactly what program is to do
Procedural code located between BEGIN and END commands
Each variable declaration and command as well as the word END are followed by semicolons
A Guide to SQL, Seventh Edition
Retrieving a Single Row and Column
The slash (/) at the end of the program appears on its own line
When the script is run, the slash causes commands in the program to be executed immediately
With the slash, commands are only loaded into memory
Typing the slash runs the program
A Guide to SQL, Seventh Edition
Using the %TYPE Attribute
The %TYPE attribute ensures the variable has the same type as a particular column in a table
Do not enter a data type it is automatically assigned from the corresponding column
I_REP_NUM REP.REP_NUM%TYPE
A Guide to SQL, Seventh Edition
Retrieving a Single Row from a Join Use embedded SQL commands to join tables
A Guide to SQL, Seventh Edition
Inserting a Row into a Table When updating a database from the PL/SQL program, use
appropriate SQL commands
A Guide to SQL, Seventh Edition
Changing a Single Row in a Table
Use the SQL command to insert rows in a database
A Guide to SQL, Seventh Edition
Deleting Rows from a Table
SQL commands are used to delete rows from a table
A Guide to SQL, Seventh Edition
Multiple-Row Select
PL/SQL can process only one record at a time
A cursor is a pointer to a row in the collection of rows retrieved by a SQL command
A cursor advances one row at a time to provide sequential one-record-at-a-time access to retrieved rows
A Guide to SQL, Seventh Edition
Using Cursors
The first step is to declare the cursor and describe the associated query in the declaration section
CURSOR CUSTGROUP ISSELECT CUSTOMER_NUM, CUSTOMER_NAMEFROM CUSTOMERWHERE REP_NUM = ‘&I_REP_NUM’;
Three commands are needed
OPEN, FETCH, CLOSE
A Guide to SQL, Seventh Edition
Opening a Cursor
OPEN command
Opens cursor
Causes query to be executed
Makes results available to the program
Prior to opening, there are no rows available to be fetched
OPEN CUSTGROUP
A Guide to SQL, Seventh Edition
Fetching Rows from a Cursor
FETCH command Advances cursor to next row in set of retrieved
rows
Places contents of row in indicated variables
FETCH CUSTGROUP I_CUSTOMER_NUM,I_CUSTOMER_NAME;
Execution of fetch command produces only a single row
A Guide to SQL, Seventh Edition
Closing a Cursor
CLOSE command Closes a cursor Deactivates it Data retrieved by execution of the query is no longer
available
A Guide to SQL, Seventh Edition
More Complex Cursors
Any SLQ query is legitimate in a cursor definition
More complicated retrieval requirements result in greater benefits
A Guide to SQL, Seventh Edition
Advantages of Cursors
Simplified coding in the program Progams with embedded SQL utilizes the
optimizer Programmer doesn’t worry about the best way to
retrieve data Program doesn’t have to change even if the
underlying structure does Cursor definition only changes; not procedural
code
A Guide to SQL, Seventh Edition
Updating Cursors
Update the rows encountered in processing cursors with FOR UPDATE OF
A Guide to SQL, Seventh Edition
Using SQL in Microsoft Access Programs
In Access, programs are written in Visual Basic
Does not allow inclusion of SQL commands in the code
If the SQL command is store in string variable, use the DoCmd.RunSQL command
A Guide to SQL, Seventh Edition
Deleting Rows
Place the SQL command in the procedure, including arguments
Example
DELETE FROM REP WHERE REP_NUM = ’20’
A Guide to SQL, Seventh Edition
Running the Code
Normally run by calling it from another procedure or by associating it with an event
Can be run by using the Immediate window
Normally for testing
A Guide to SQL, Seventh Edition
Updating Rows
Similar to the procedure to delete a sales rep, except
Need the UPDATE command
Two arguments rather than one
• Two portions of the construction of the SQL command that involve variables
A Guide to SQL, Seventh Edition
Inserting Rows
Process is similar
Create the appropriate INSERT command in the strSQL variable
Multiple arguments
Once for each value inserted
A Guide to SQL, Seventh Edition
Finding Rows
SELECT commands handled differently than in PL/SQL
No cursors
Handle results of query just as you would use a loop to process through the records on the table
A Guide to SQL, Seventh Edition