Cursor variables, PL-SQL Programming

Assignment Help:

Cursor Variables

Similar to a cursor, cursor variable points to the current row in the result set of a multi-row query. But, dissimilar a cursor, a cursor variable can be opened for any type-compatible query. It is not tied to a specific query. The Cursor variables are true PL/SQL variables, to which you can assign new values and can pass to subprograms stored in an Oracle database. This gives you a convenient way and more flexibility to centralize data retrieval.

Normally, you open a cursor variable by passing it to a stored procedure that declares a cursor variable as one of its formal parameters. The following process opens the cursor variable generic_cv for the chosen query:

PROCEDURE open_cv (generic_cv IN OUT GenericCurTyp,choice NUMBER) IS BEGIN

IF choice = 1 THEN

OPEN generic_cv FOR SELECT * FROM emp; ELSIF choice = 2 THEN

OPEN generic_cv FOR SELECT * FROM dept; ELSIF choice = 3 THEN

OPEN generic_cv FOR SELECT * FROM salgrade; END IF;

Attributes

The PL/SQL variables and cursors have attributes that are properties that let you reference the datatype and structure of an item without repeating its definition. The Database columns and tables have same attributes that you can use to ease maintenance. A percent sign (%) serves as the attribute indicator.

%TYPE

 

The %TYPE attribute provides the datatype of a variable or database column. This is principally useful when declaring variables that will hold database values. For example, suppose there is a column named title in a table named books. To declare a variable named my_title  which has the same datatype as column title, use dot notation and the %TYPE   attribute, as shown:

my_title books.title%TYPE;

Declaring my_title with %TYPE has two benefits. First, you do not require knowing the exact datatype of the title. Second, if you change the database definition of title (make it a big character string for example), the datatype of my_title changes consequently at run time.

%ROWTYPE

The PL/SQL, records are used to group data. A record consists of a number of related fields in which the data values can be stored. The %ROWTYPE attribute gives a record type that shows a row in a table. The record can store a whole row of data selected from the table or fetched from a cursor or cursor variable.

The Columns in a row and corresponding fields in a record have similar names and datatypes. In the illustration below, you declare a record named dept_rec. Its fields have similar names and datatypes as the columns in the dept table.

DECLARE

dept_rec dept%ROWTYPE;            -- declare record variable

You use dot notation to reference the fields, as the example below shows:

my_deptno := dept_rec.deptno;

If you declare a cursor which retrieves the job title, last name, salary and hire date of an employee, you can use %ROWTYPE  to declare a record that stores similar information, as shown:

DECLARE

CURSOR c1 IS

SELECT ename, sal, hiredate, job FROM emp;

emp_rec c1%ROWTYPE;                               

-- declare record variable that represents

-- a row fetched from the emp table

When you execute the statement

FETCH c1 INTO emp_rec;

The value in the ename  column of the emp table is assigned to the ename field of emp_rec, the value in the sal   column is assigned to the sal field, and so on. Figure represents how the result might appear.

787_cursor variables.png

Figure: %ROWTYPE Record emp_rec


Related Discussions:- Cursor variables

Sql query on hospital database, Perform the following queries on the Hospit...

Perform the following queries on the Hospital1.DB using SQL Anywhere (START EARLY!). a. Which patients have purchased the drug "Tylenol"? List the names and addresses. Arrange the

Using host arrays - bulk bind performance improvement, Using Host Arrays ...

Using Host Arrays The Client-side programs can use anonymous PL/SQL blocks to bulk-bind input and output host arrays. However, this is the well-organized way to pass the colle

Example of alternative formulation as a table constraint, Example of Altern...

Example of Alternative formulation as a table constraint Example: Alternative formulation as a table constraint ALTER TABLE EXAM_MARK ADD CONSTRAINT Must_be_enrolled_to_

Declarations in sql-pl/sql, Declarations in SQL Your program stores value...

Declarations in SQL Your program stores values in the variables and constants. As the program executes, the value of the variables can change, but the values constants cannot.

Using operator deref - manipulating objects in pl sql, Using Operator DEREF...

Using Operator DEREF: You cannot navigate through refs within the PL/SQL procedural statements. Rather than, you should use the operator DEREF in the SQL statement. The DEREF

Join query, Using a join on 3 tables, select 5 columns and 10 rows from the...

Using a join on 3 tables, select 5 columns and 10 rows from the 3 tables without the use of a Cartesian product Query: SELECT E.LAST_NAME, E.FIRST_NAME, S.BUILDING, S.BRAN

Count operator in sql, Count Operator in SQL Example: Counting the stu...

Count Operator in SQL Example: Counting the students who have scored more than 50 in some exam (SELECT COUNT (*) FROM (SELECT DISTINCT StudentId FROM EXAM_MARK WHE

Parameter & keyword description - functions, Parameter & Keyword Descriptio...

Parameter & Keyword Description: function_name: The user-defined function is identifying by that keyword. parameter_name: This identifies the formal parameter that

Effects of null in table literal, Effects of NULL in Table Literal Whe...

Effects of NULL in Table Literal When a VALUES expression appears as the source value for an SQL INSERT statement, the key word NULL can appear as a field value, such that for

Sql operators, SQL Operators The PL/SQL uses all the SQL set, compariso...

SQL Operators The PL/SQL uses all the SQL set, comparison, and row operators in the SQL statements. This part briefly describes some of these operators.  1. Comparison Opera

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd