Scope and visibility- pl/sql, PL-SQL Programming

Assignment Help:

Scope and Visibility

The References to an identifier are resolved according to its visibility and scope. The scope of an identifier is that area of a program unit (subprogram, block, or package) from which you can reference the identifier. An identifier is visible only in the areas from which you can reference the identifier using an unqualified name. The Figure shows the visibility and scope of a variable named x that is declared in an enclosing block, and then re-declared in a sub-block.

The Identifiers declared in a PL/SQL block are considered local to that block and global to all its sub-blocks. If a global identifier is re-declared in a sub-block, both the identifiers remain in the scope. Within the sub-block, though, only the local identifier is visible as you must use a qualified name to reference the global identifier.

Though you cannot declare an identifier twice in the similar block, you can declare the same identifier in two various blocks. The two items represented by the identifier are discrete, and any change in one does not affect the other. Though, a block cannot reference the identifiers declared in other blocks at the similar level as these identifiers are neither global nor local to the block.

 

2006_Scope and Visibility.jpg

 

                                          Figure: Scope and Visibility




The example below describes the scope rules. Note that the identifiers declared in one sub-block cannot be referenced in another sub-block. That is because the block cannot reference the identifiers declared in another blocks nested at similar level.


DECLARE
a CHAR;
b REAL;
BEGIN

-- identifiers available here: a (CHAR), b
DECLARE
a INTEGER;
c REAL;
BEGIN
-- identifiers available here: a (INTEGER), b, c
END;
DECLARE
d REAL;
BEGIN
-- identifiers available here: a (CHAR), b, d
END;
-- identifiers available here: a (CHAR), b
END;


Remember that the global identifiers can be re-declared in a sub-block, in that case the local declaration prevails and the sub-block cannot reference the global identifier unless you use a qualified name. The qualifier can be the label of an enclose block, as the example below shows:


<>
DECLARE
birthdate DATE;
BEGIN
DECLARE
birthdate DATE;
BEGIN
...
IF birthdate = outer.birthdate THEN...


As the next illustration shown below, the qualifier can also be the name of an enclosing subprogram:


PROCEDURE check_credit (...) IS
rating NUMBER;
FUNCTION valid (...) RETURN BOOLEAN IS
rating NUMBER;
BEGIN
...
IF check_credit.rating < 3 THEN...


Though, within the same scope, a label and a subprogram cannot have the similar name.


Related Discussions:- Scope and visibility- pl/sql

Operator precedence-pl/sql expressions , Operator Precedence The operati...

Operator Precedence The operations within an expression are completed in a particular order depending on their precedence (priority). The table shows the default order of the op

Updating variables, Updating Variables For assignment, SQL uses the ke...

Updating Variables For assignment, SQL uses the key word SET, as in SET X = X + 1 (read as "set X equal to X+1") rather than X: = X + 1 as found in many computer languages.

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

Use bulk binds - improve performance of application, Use Bulk Binds If...

Use Bulk Binds If SQL statements execute inside a loop using the collection elements as bind variables, context switching between the PL/SQL & SQL engines can slow down the ex

Use the nocopy compiler hint - performance of application, Use the NOCOPY C...

Use the NOCOPY Compiler Hint By default, the OUT and IN OUT parameters are passed by the value i.e. the value of an IN OUT actual parameter is copied into the corresponding fo

Transaction control, Transaction Control The Oracle is transaction orie...

Transaction Control The Oracle is transaction oriented; that is, Oracle uses the transactions to make sure the data integrity. The transaction is a sequence of SQL data manip

Parameter and keyword description - records, Parameter and Keyword Descript...

Parameter and Keyword Description: record_type_name: This identifies the user-defined type specifier that is used in the subsequent declarations of the records. NOT N

Explicit cursors, Explicit Cursors The set of rows returned by the que...

Explicit Cursors The set of rows returned by the query can include zero, one, or multiple rows, depending on how many rows meet your search criteria. Whenever a query returns

Use of table expressions - expressing constraint conditions, Use of Table E...

Use of Table Expressions - Expressing Constraint Conditions With the exception of key constraints, the examples in the theory book all explicitly reference at least one relvar

Sql pseudocolumns, SQL Pseudocolumns The PL/SQL recognizes the followin...

SQL Pseudocolumns The PL/SQL recognizes the following SQL pseudocolumns, that returns the specific data items: LEVEL, NEXTVAL, CURRVAL, ROWID, & ROWNUM. The Pseudocolumns are n

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