PL/SQL Interview Questions

PL/SQL Interview Questions

Read Top 20+ PL/SQL Interview Questions and Answers

PL / SQL is a procedural language specifically designed to include SQL assertions in its syntax. The Oracle Database server compiles PL / SQL program units and is deposited in the database. and both PL / SQL and SQL run in same server entire process at runtime, putting optimum efficiency. PL / SQL automatically acquires the Oracle Database's robustness, security, and portability.

Finally, practice here the top 20+ PL/SQL Interview Questions and Answers. apart from this you can also download, PL/SQL Interview Questions PDF, completly free.

Download PL/SQL Interview Questions PDF

Below are the list of Best PL/SQL Interview Questions and Answers

PL/SQL stands for Procedural Language extension of Structured Query Language (SQL). It is a block-structured language having logical blocks which are made up of three sub-blocks i.e. a declarative part, an executable part and an exception building part. PL/SQL is integrated with Oracle and the functionalities of PL/SQL extend after each release of Oracle database.

It includes procedural language elements like conditions and loops and allows declaration of constants and variables, procedures and functions. It also helps the users to develop complex database applications using control structures, procedures, modules, etc. PL/SQL is not limited by any case-sensitive letters so you are free to use lower case letters or upper case letters.

PL/SQL is Oracle’s Procedural Language SQL which allows you to write full programs to execute options like insert/ select/ updates/ delete. SQL is a query language that allows you to execute a single insert/ delete/ update. The following are the notable differences between SQL and PL/SQL:

SQLPL/SQL
SQL is a data-oriented language which is very useful for interactive processing.PL/SQL is a procedural language to create applications. It is an extension of Oracle.
SQL doesn’t have any procedural capabilities like condition testing, looping. It tells the database what to do and not how to do.On the contrary, PL/SQL offers procedural capabilities like condition testing, looping, etc. it also offers high language features.
SQL is executed by the database one statement at a time. It is a time-consuming process.PL/SQL is less time consuming as compared with SQL. It sends the block of codes to the database server at the same time.
There are very less chances of error handling in SQL. 
Some of the characteristics of PL/SQL are furnished below:
  • PL/SQL is completely portable as code can be executed on any operating system provided Oracle is loaded in it.
  • It offers extensive error checking. Users can write their own customized error handling routines.
  • PL/SQL provides a built-in, integrated programming environment which enhances the performance of transactions with integration to Oracle data dictionary.
  • It also allows free access and sharing of same subprograms by multiple applications.

Each constant, value and parameter has a data type that tells us the type of data used and their associated operations in the program. The following are four data types available in PL/SQL:

  1. Scalar data type-these are single-valued data types with no internal components. They are further classified into four categories-
  2. CHAR– these data types hold the fixed-length character strings. Its value ranges from 1 to 32,767 characters.
  3. VARCHAR2– these data types store variable-length character strings ranging from 1 to 32,767 characters.
  4. BOOLEAN– it is a data type with two values, true or false, intended to represent the truth values of logic and Boolean algebra.
  5. DATE– it is a data type for storing date and time information.
  6. LONG– it is an Oracle data type for storing character data of variable length.
  1. Composite data type- it is a combination of other data types and internal components that can be easily altered and manipulated. These include record, table and array.
  2. Reference data type- it is a data type that holds pointers to other data items. Ref Cursor is an example.
  3. Large object data type- These data types hold locators that defines the location of large objects stored out of the line. These are stored separately from other data items.

%TYPE- The %TYPE lets you declare a constant, variable, collection element, etc as previously declared variable or column. It is an attribute which is used for anchoring. Example- the variable m_empno has same data type as the column empno in table emp.

%ROWTYPE- the %Rowtype attribute lets you declare a record that represents a row in the table.  The fields of the row have same name and data types as column in the view. Example- dept_rec dept%ROWTYPE . This declares a record that can store an entire row for DEPT table.

PL/SQL packages are schema objects that groups logically related functions stored procedures, cursors and variables at one place. The package is compiled and stored in a database and its contents can be shared. Packages have two parts: a specification and a body.
PL/SQL controls the context area through cursors. PL/SQL requires cursors to retrieve and process more than one row. A cursor is a pointer to the area of the memory containing SQL statements and information for processing the statements. PL/SQL is a mechanism under which multiple rows are selected from the database. Then, each row selected is individually processed inside PL/SQL programs.

There are two types of PL/SQL cursors -

Explicit cursors– Explicit cursors are used for queries that return more than one row. It is a programmer-defined cursor for gaining more control over context area. In order to use explicit cursors, the following steps are used-

Declare the cursor,

Syntax: CURSOR <cursor_name> is

SELECT statement;

Here, cursor name is the name given to the cursor and SELECT is used for returning rows to cursor active set.

Open the cursor

Syntax: OPEN <cursor_name>

Where <cursor_name> is name of previously-defined cursor.

Fetch rows from the cursor

Syntax: FETCH <cursor_name> INTO <record_list>

Close the cursor

Syntax: CLOSE <cursor_name>

Implicit cursors- These cursors are created when any SQL statements are executed. PL/SQL uses following implicit cursors-

  • INSERT
  • UPDATE
  • DELETE
  • SELECT
Triggers are used to define an action when database related events are performed. It is used for preventing invalid transactions, enforcing complex business rules, etc. Triggers mean activating an action.
Stored procedure takes place explicitly when call statements are issued from another block. The trigger is implicitly executed whenever any activating events like the occurrence of DML statements happen.
Take Free: Pl/sql MCQ & Quiz

There are several differences between Triggers and constraints. Given below are the major ones:

TriggerConstraints
Trigger affects only those rows, which are added after it is enabled.Constraints affects all the rows i.e. the once that existed before and the ones that were newly added.
Triggers unlike constraints is capable of implementing high-end business rules that are complicatedA constraint is responsible only for maintaining the integrity of the database.

In PL/SQL, grouping the statements into units creates a ‘block’. You can include several elements in PL/SQL blocks such as variables, loops, constants, SQL statements, and conditional statements except handling. Using blocks you can develop a function, a procedure or probably a package. Generally, these blocks can be classified into two broad categories:

  1. Anonymous blocks: When the PL/SQL blocks do not have a header they are referred as anonymous blocks. Such blocks cannot be used for developing the triggers, function or a procedure. For example DECLARE, num NUMBER(2), sq NUMBER(3), BEGIN, num:= &Number1, sq := num*num, DBMS_OUTPUT.PUT_LINE(‘Square:’ ||sq), END.
  2. Named blocks: When the PL/SQL block contains a header or labels, it is referred as Named blocks. Using named blocks, subprograms such as functions, procedures, packages or triggers can be developed. For example FUNCTION sqr (num IN NUMBER), RETURN NUMBER is sq NUMBER (2), BEGIN, sq:= num*num, RETURN sq, END
The errors such as spelling mistakes come under syntax errors, which can easily be found using a PL/SQL compiler. As far as Runtime error is concerned, they are found in PL/SQL block. You need to add an exception handling section to handle those errors. Such errors come under SELECT INTO statements that return no rows.

Here is a list of some predefined exceptions that can be used in PL/SQL:

  • DUP_VAL_ON_INDEX
  • NO_DATA_FOUND
  • CURSOR_ALREADY_OPEN
  • INVALID_NUMBER
  • INVALID_CURSOR
  • TIMEOUT _ON_RESOURCE
  • LOGON_DENIED
  • ZERO_DIVIDE
  • TOO_MANY_ROWS
  • PROGRAM_ERROR
  • STORAGE_ERROR
  • VALUE_ERROR
A total of 12 types of triggers can be found in PL/SQL that have to be used in combinations. Some of the triggers are AFTER, DELETE, ROW, BEFORE, TABLE, INSERT, UPDATE etc. The few possible combinations are:
  • BEFORE ALL ROW INSERT
  • BEFORE INSERT
  • AFTER INSERT
  • AFTER ALL ROW INSERT
There is a considerable difference between function, procedure and package.

Function: The PL/SQL function consists of return type and is responsible for computing so that it can return a single value. Due to a specification in return type, the value returned must be in that same type.

Procedure: Procedure is just responsible for a return statement that can stop an execution and return back to the caller. Unlike a function, the procedure does not have any specific return type and doesn’t return single but multiple values.

Package: A package, which is a schema object, is responsible for grouping PL/SQL types, subprograms and items, which are logically related. Package consists of all i.e. procedure, record type statement, function, and procedure. Being able to provide modularity, it is cable of developing an application. Using a package, you can hide information coming from an unauthorized user.

PL/SQL tables are those that are type tables of modeled database.  They are capable of providing arrays or so-called temporary tables. These arrays are located in memory that is instantly processed. The PL/SQL tables are capable of moving big data by simplification of moving data collection.
A mutating table is the one, which is modified using a DML statement or a table with defined triggers. A constraining table is the one, which is being read for a referential integrity constraint.

PL/SQL is a language whose programs are written in terms of blocks of codes that's why it is also known as block-structured language.

There are three sections of the structure of PL/SQL which are declarations, executable commands, and exception handling.

  • Declaration: The first declaration section begins with the keyword DECLARE. This section defines cursors, variables, subprograms, and other elements. In short here, you declare all the variables you are using in the program.
  • Executable commands: It is the second section which is enclosed with BEGIN and END keywords. This section is mandatory to perform as it consists of the statement of the program. It is needed that you use at least one line of code that is executable.
  • Exceptional handling: This last section begins with the EXCEPTION keyword. The function of this section in the program is to handle errors.

There is a considerable difference between the ROLLBACK and ROLLBACK TO statements. When you apply the ROLLBACK command a transaction is completely undone where all the blocks are released. As far as the ROLLBACK TO command is concerned, the transaction is undone but till a SAVEPOINT. Thus, the transaction remains live and active even after the command is implemented.

Just like every procedural language, a block is the smallest valuable group of code. A block offers both scoping and execution boundaries for exception handling and declaring variables. PL/SQL offers you the opportunity to create blocks that have no name and blocks that have a name. These blocks might be triggers, packages, objects, procedures or function types. A PL/SQL block is made up of 4 sections. The 4 sections are declaration, exception, header and execution sections but just one is required. The header section is an optional section just like exception and declaration. Only the execution section is required or mandatory.