You are on page 1of 4

PL-SQL Interview Questions with Answers

1. Describe the difference between a procedure, function and anonymous pl/sql block.
Level: Low
Expected answer : Candidate should mention use of DECLARE statement, a function must
return a value while a procedure doesn't have to.

2. What is a mutating table error and how can you get around it?
Level: Intermediate
Expected answer: This happens with triggers. It occurs because the trigger is trying to update
a row it is currently using. The usual fix involves either use of views or temporary tables so
the database is selecting from one while updating the other.

3. Describe the use of %ROWTYPE and %TYPE in PL/SQL


Level: Low
Expected answer: %ROWTYPE allows you to associate a variable with an entire table row.
The %TYPE associates a variable with a single column type.

4. What packages (if any) has Oracle provided for use by developers?
Expected answer: Oracle provides the DBMS_ series of packages. There are many
which developers should be aware of such as DBMS_SQL, DBMS_PIPE, DBMS_TRANSACTION,
DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_DDL,
UTL_FILE. If they can mention a few of these and describe how they used them, even better.
If they include the SQL routines provided by Oracle, great, but not really what was asked.

5. Describe the use of PL/SQL tables


Expected answer: PL/SQL tables are scalar arrays that can be referenced by a
binary integer. They can be used to hold values for use in later queries
or calculations. In Oracle 8 they will be able to be of the %ROWTYPE designation, or RECORD.

6. When is a declare statement needed ?


The DECLARE statement is used in PL/SQL anonymous blocks such as with stand alone, non-
stored PL/SQL procedures. It must come first in a PL/SQL stand alone file if it is used.

7. In what order should a open/fetch/loop set of commands in a PL/SQL block be implemented


if you use the NOTFOUND cursor variable in the exit when statement? Why?
Expected answer: OPEN then FETCH then LOOP followed by the exit when. If not specified in
this order will result in the final return being done twice because of the way the %NOTFOUND
is handled by PL/SQL.

8. What are SQLCODE and SQLERRM and why are they important for PL/SQL developers?
Expected answer: SQLCODE returns the value of the error number for the last error
encountered. The SQLERRM returns the actual error message for the last error encountered.
They can be used in exception handling to report, or, store in an error log table, the error that
occurred in the code. These are especially useful for the WHEN OTHERS exception.

9. How can you find within a PL/SQL block, if a cursor is open?


Expected answer: Use the %ISOPEN cursor status variable.

10. How can you generate debugging output from PL/SQL?


Expected answer: Use the DBMS_OUTPUT package. Another possible method is to just use the
SHOW ERROR command, but this only shows errors. The DBMS_OUTPUT package can be used
to show intermediate results from loops and the status of variables as the procedure is
executed. The new package UTL_FILE can
also be used.

11. What are the types of triggers?


Expected Answer: There are 12 types of triggers in PL/SQL that consist of
combinations of the BEFORE, AFTER, ROW, TABLE, INSERT, UPDATE, DELETE and
ALL key words:
BEFORE ALL ROW INSERT
AFTER ALL ROW INSERT
BEFORE INSERT
AFTER INSERT etc.

How do you convert a date to a string?


What is an aggregate function?
What is the dual table?
What are cursors? Distinguish between implicit and explict cursors?
Explain how cursors are used by Oracle?
What is PL/SQL? Describe the block structure of PL/SQL?
What is a nested subquery?
What are the various types of queries ?
Which of the following is not a schema object : Index, table, public synonym, trigger and
package ?
What is dynamic sql in oracle?
What is the difference between a package, procedure and function
What is the difference between delete, drop and truncating a table
How many triggers are supported in Oracle
Are you aware of FLASHBACK concept ? What is it?
Describe oracle’s logical and physical structure?
What is data dictionary
What is the use of control files
How would store XML data in table ? What data type would be used for the columns?
Difference between post and commit?
Difference between commit and rollback?
What are savepoints?
Difference between a View and Synonym
How would you fetch system date from oracle
What is the difference between primary key, unique key, foreign key?
What is the difference between NO DATA FOUND and %NOTFOUND
What is cursor for loop
What are cursor attributes
What will you use in Query : IN or EXISTS? Why
Explain the difference between a data block, an extent and a segment.
What's the difference between logical and physical I/O?
What is an anonymous block?
What is a PL/SQL collection?
How can you tell if an UPDATE updated no rows
How can you tell if a SELECT returned no rows

DB concepts:

Physical Database Structure

1. Datafiles
2. Redo log files
3. Control files.

Logical Structures
1. TableSpaces
2. DB Schema Objects.

Segments,Extents and Data Blocks

Oracle background processes

1. PMON
2.SMON
3.DBWR
4.LGWR
5.ARCH
6.RECO

A synonym is an alias for a table, view, sequence, create public synonyms that make the base
schema object available for general, system-wide use by any database user.

Indexes are created to increase the performance of data retrieval

1. What is DDL, DML ? How are they different?


2. What are different types of joins in SQL?
3. How do you select unique rows using SQL?
4. What is the difference between DELETE and TRUNCATE ?
5. What is the difference between a "where" clause and a "having" clause?
6. What is the difference between "procedure" and "function"?
7. What is the difference between "translate" and "replace" ?
8. How to remove duplicate records from a table?
9. What is a "trigger"?
10.What is the difference between "translate" and "replace"?
11.What is a VIEW?
12.What is the difference among "dropping a table", "truncating a table"
and "deleting all records" from a table
13.Explain new feature of 9i Database ? Explain new feature of 10g Database ?
14.How to use DECODE function?
15.What is “Group by” clause?
16.What are cursors and what are the situations you will use them?
17.What default packages are provided by Oracle?
18.How do you debug a oracle procedure /function?
19.How many triggers are available?
20.How are procedures executed?

• What are the different types of joins?


• What is the difference between procedure and function
• What is group by function
• What is the difference between a where clause and having clause
• What are indexes. Advantages of indexes
• Triggers, how many triggers are available
• What does “i” represent in Oracle8i / 9i
• Difference between primary key and foreign key
• Can we have null in a primary key
• Can we have null in a foreign key, if yes , how many in a table
• What are cursors
• Give example of how SQL tuning can be done
• What is normalization
• Difference between delete and truncate
• Are you aware of water level mark in oracle database? What is it?
• What are views, snapshots and synonyms?
• What value one gets for “Select * from dual”
• Have you used Decode function? Give an example
• Example when inner joins was used?
• Example when outer joins was used?
• Datatypes supported by Oracle
• Can you explain how do index retrieve records from database
• What is commit and rollback
• What is the difference between these 2 queries
o Select count(*) from table
o Select count(1) from table
• Difference between NODATAFOUND and %NOFOUND
• Difference between IN and EXISTS? Which is faster in execution?
• What is referential integrity
• What are constraints
• What are transaction isolation levels?
• What are materialized views?