You are on page 1of 10

PL-SQL Interview Questions Collections

2. What is the basic structure of PL/SQL? PL/SQL uses block structure as its basic structure. Anonymous blocks or nested blocks can be used in PL/SQL. 5. What are the datatypes a available in PL/SQL? Some scalar data types such as NUMBER, VARCHAR2, DATE, CHAR, LONG, BOOLEAN. Some composite data types such as RECORD & TABLE. 6. What are % TYPE and % ROWTYPE? What are the advantages of using these over datatypes? % TYPE provides the data type of a variable or a database column to that variable. % ROWTYPE provides the record type that represents a entire row of a table or view or columns selected in the cursor. The advantages are: I. need not know about variable's data type ii. If the database definition of a column in a table changes, the data type of a variable changes accordingly. 7. What is difference between % ROWTYPE and TYPE RECORD ? % ROWTYPE is to be used whenever query returns a entire row of a table or view. TYPE rec RECORD is to be used whenever query returns columns of different table or views and variables. E.g. TYPE r_emp is RECORD (eno emp.empno% type,ename emp ename %type ); e_rec emp% ROWTYPE Cursor c1 is select empno,deptno from emp; e_rec c1 %ROWTYPE. 8. What is PL/SQL table? Objects of type TABLE are called "PL/SQL tables", which are modelled as (but not the same as) database tables, PL/SQL tables use a primary PL/SQL tables can have one column and a primary key. 9. What is a cursor? Why Cursor is required? Cursor is a named private SQL area from where information can be accessed. Cursors are required to process rows individually for queries returning multiple rows. 10. Explain the two types of Cursors? There are two types of cursors, Implict Cursor and Explicit Cursor. PL/SQL uses Implic it Cursors for queries. (SQL%NOTFOUND,%FOUND,%ROWCOUNT,%ISOPEN) User defined cursors are called Explicit Cursors. They can be declared and used.

11. What are the PL/SQL Statements used in cursor processing? DECLARE CURSOR cursor name, OPEN cursor name, FETCH cursor name INTO <variable list> or Record types, CLOSE cursor name. 12. What are the cursor attributes used in PL/SQL? %ISOPEN - to check whether cursor is open or not % ROWCOUNT - number of rows featched/updated/deleted. % FOUND - to check whether cursor has fetched any row. True if rows are featched. % NOT FOUND - to check whether cursor has featched any row. True if no rows are featched. These attributes are proceded with SQL for Implict Cursors and with Cursor name for Explict Cursors. 13. What is a cursor for loop? Cursor for loop implicitly declares %ROWTYPE as loop index,opens a cursor, fetches rows of values from active set into fields in the record and closes when all the records have been processed. eg. FOR emp_rec IN C1 LOOP salary_total := salary_total +emp_rec sal; END LOOP; 14. What will happen after commit statement ? Cursor C1 is Select empno, ename from emp; Begin open C1; loop Fetch C1 into eno.ename; Exit When C1 %notfound;----commit; end loop; end; The cursor having query as SELECT .... FOR UPDATE gets closed after COMMIT/ROLLBACK. The cursor having query as SELECT.... does not get closed even after COMMIT/ROLLBACK. 15. Explain the usage of WHERE CURRENT OF clause in cursors ?

WHERE CURRENT OF clause in an UPDATE,DELETE statement refers to the latest row fetched from a cursor. 16. What is a database trigger ? Name some usages of database trigger ? Database trigger is stored PL/SQL program unit associated with a specific database table. Usages are Audit data modificateions, Log events transparently, Enforce complex business rules Derive column values automatically, Implement complex security authorizations. Maintain replicate tables. 17. How many types of database triggers can be specified on a table? What are they? Insert Update Delete Before Row After Row Before Statement After Statement o.k. o.k. o.k. o.k. o.k. o.k. o.k. o.k. o.k. o.k. o.k. o.k.

If FOR EACH ROW clause is specified, then the trigger for each Row affected by the statement. If WHEN clause is specified, the trigger fires according to the retruned boolean value. 18. Is it possible to use Transaction control Statements such a ROLLBACK or COMMIT in Database Trigger? Why? It is not possible. As triggers are defined for each table, if you use COMMIT of ROLLBACK in a trigger, it affects logical transaction processing. 19. What are two virtual tables available during database trigger execution? The table columns are referred as OLD.column_name and NEW.column_name. For triggers related to INSERT only NEW.column_name values only available. For triggers related to UPDATE only OLD.column_name NEW.column_name values only available. For triggers related to DELETE only OLD.column_name values only available. 20. What happens if a procedure that updates a column of table X is called in a database trigger of the same table? Mutation of table occurs. 21. Write the order of precedence for validation of a column in a table ? I. done using Database triggers. ii. done using Integarity Constraints. 22. What is an Exception? What are types of Exception?

Exception is the error handling part of PL/SQL block. The types are Predefined and user_defined. Some of Predefined execptions are. CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX NO_DATA_FOUND TOO_MANY_ROWS INVALID_CURSOR INVALID_NUMBER LOGON_DENIED NOT_LOGGED_ON PROGRAM-ERROR STORAGE_ERROR TIMEOUT_ON_RESOURCE VALUE_ERROR ZERO_DIVIDE OTHERS. 23. What is Pragma EXECPTION_INIT? Explain the usage? The PRAGMA EXECPTION_INIT tells the complier to associate an exception with an oracle error. To get an error message of a specific oracle error. e.g. PRAGMA EXCEPTION_INIT (exception name, oracle error number) 24. What is Raise_application_error? Raise_application_error is a procedure of package DBMS_STANDARD which allows to issue an user_defined error messages from stored sub-program or database trigger. 25. What are the return values of functions SQLCODE and SQLERRM? SQLCODE returns the latest code of the error that has occured. SQLERRM returns the relevant error message of the SQLCODE. 26. Where the Pre_defined_exceptions are stored? In the standard package. Procedures, Functions & Packages; 27. What is a stored procedure? A stored procedure is a sequence of statements that perform specific function. 30. What is difference between a PROCEDURE & FUNCTION? A FUNCTION is alway returns a value using the return statement. A PROCEDURE may return one or more values through parameters or may not return at all. 31. What are advantages of Stored Procedures?

Extensibility,Modularity, Reusability, Maintainability and one time compilation. 32. What are the modes of parameters that can be passed to a procedure? IN,OUT,IN-OUT parameters. 33. What are the two parts of a procedure? Procedure Specification and Procedure Body. 34. Give the structure of the procedure? PROCEDURE name (parameter list.....) is local variable declarations BEGIN Executable statements. Exception. exception handlers end; 35. Give the structure of the function? FUNCTION name (argument list .....) Return datatype is local variable declarations Begin executable statements Exception execution handlers End; 36. Explain how procedures and functions are called in a PL/SQL block ? Function is called as part of an expression. sal := calculate_sal ('a822'); procedure is called as a PL/SQL statement calculate_bonus ('A822'); 37. What is Overloading of procedures? The Same procedure name is repeated with parameters of different datatypes and parameters in different positions, varying number of parameters is called overloading of procedures. e.g. DBMS_OUTPUT put_line 38. What is a package? What are the advantages of packages?

Package is a database object that groups logically related procedures. The advantages of packages are Modularity, Easier Applicaton Design, and Information. Hiding,. Reusability and Better Performance. 39. What are two parts of package? The two parts of package are PACKAGE SPECIFICATION & PACKAGE BODY. Package Specification contains declarations that are global to the packages and local to the schema. Package Body contains actual procedures and local declaration of the procedures and cursor declarations. 40. What is difference between a Cursor declared in a procedure and Cursor declared in a package specification? A cursor declared in a package specification is global and can be accessed by other procedures or procedures in a package. A cursor declared in a procedure is local to the procedure that can not be accessed by other procedures. 41. How packaged procedures and functions are called from the following ? a. Stored procedure or anonymous block b. an application program such a PRC *C, PRO* COBOL c. SQL *PLUS a. PACKAGE NAME.PROCEDURE NAME (parameters); variable := PACKAGE NAME.FUNCTION NAME (arguments); EXEC SQL EXECUTE b. BEGIN PACKAGE NAME.PROCEDURE NAME (parameters) variable := PACKAGE NAME.FUNCTION NAME (arguments); END; END EXEC; c. EXECUTE PACKAGE NAME.PROCEDURE if the procedures does not have any out/in-out parameters. A function can not be called. 42. Name the tables where characteristics of Package, procedure and functions are stored? User_objects, User_Source and User_error. Part-2

Whats a PL/SQL table? Its purpose and Advantages? A PL/SQL table is one dimensional, indexed, unbounded sparsed collection of homogeneous Data. PLSQL tables are used to move data into and out of the database and between client side applications and stored

sub-programs. They have attributes such as exits, prior, first, last, delete ,next . These attributes make PLSQL tables easier to use and applications easier to maintain. Advantages: 1 PL\SQL tables give you the ability to hold multiple values in a structure in memory so that a PL\SQL block does not have to go to the database every time it needs to retrieve one of these values - it can retrieve it directly from the PL\SQL table in memory. 2 Global temporary tables act as performance enhancers when compared to standard tables as they greatly reduce the disk IO. 3 They also offer the ease-of-use of standard tables, since standard SQL can be used with them; no special arrayprocessing syntax is required. What is a Cursor? How many types of Cursor are there? A) Cursor is an identifier/name to a work area that we can interact with to access its information. A cursor points to the current row in the result set fetched. There are three types of cursors. They are 1 Implicit cursors created automatically by PL/SQL for all SQL Dml statements such as Insert Update, delete and Select 2 Explicit cursors Created explicitly. They create a storage area where the set of rows Returned by a query are placed. 3 Dynamic Cursors Ref Cursors( used for the runtime modification of the select querry). Declaring the cursor, Opening the cursor, Fetching data , Closing the cursor(Releasing the work area) are the steps involved when using explicit cursors. What is the difference between Function and Procedure? 1..Procedure is a sub program written to perform a set of actions and returns multiple valuesUsing out parameters or return no value at all. 2..Function is a subprogram written to perform certain computations and return a single value. What are the modes for passing parameters to Oracle? There are three modes for passing parameters to subprograms 1.IN - An In-parameter lets you pass values to the subprogram being called. In the subprogram it acts like a constant and cannot be assigned a value. 2. OUT An out-parameter lets you return values to the caller of the subprogram. It acts like an initialized variable its value cannot be assigned to another variable or to itself. 3.INOUT An in-out parameter lets you pass initial values to the subprogram being called and returns updated values to the caller. What is the difference between Truncate and Delete Statement? 1.Truncate Data truncated by using truncate statement is lost permanently and cannot be retrieved even by rollback. Truncate command does not use rollback segment during its execution, hence it is fast. 2. Delete Data deleted by using the delete statement can be retrieved back by Rollback. Delete statement does not free up the table object allocated space. What are Exceptions? How many types of Exceptions are there? Exceptions are conditions that cause the termination of a block. There are two types of exceptions 1.Pre-Defined Predefined by PL/SQL and are associated with specific error codes. 2.User-Defined Declared by the users and are rose on deliberate request. (Breaking a condition etc.) Exception handlers are used to handle the exceptions that are raised. They prevent exceptions from propagating out of the block and define actions to be performed when exception is raised. What is a Pragma Exception_Init? Explain its usage? Pragma Exception_Init is used to handle undefined exceptions. It issues a directive to the compiler asking it to associate an exception to the oracle error. There by displaying a specific error message pertaining to the error occurred. Pragma Exception_Init (exception_name, oracle_error_name). What is a Raise and Raise Application Error? 1.Raise statement is used to raise a user defined exception. 2. A raise application error is a procedure belonging to dbms_standard package. It allows to display a user defined error message from a stored subprogram. What is the difference between Package, Procedure and Functions? 1.A package is a database objects that logically groups related PL/SQL types, objects, and Subprograms.

2.Procedure is a sub program written to perform a set of actions and can return multiple values. 3.Function is a subprogram written to perform certain computations and return a single value. Unlike subprograms packages cannot be called, passed parameters or nested. How do you make a Function and Procedure as a Private? Functions and Procedures can be made private to a package by not mentioning their declaration in the package specification and by just mentioning them in the package body. How do you kick a Concurrent program from PL/SQL? Using FND_REQUEST.SUBMIT_REQUEST. What is an Anonymous block? Anonymous Block is a block of instructions in PL/SQL and SQL which is not saved under a name as an object in database schema It is also not compiled and saved in server storage, so it needs to be parsed and executed each time it is run. However, this simple form of program can use variables, can have flow of control logic, can return query results into variables and can prompt the user for input using the SQL*Plus '&' feature as any stored procedure. What are the two basic parameters that we have to pass while registering PL/SQL procedure? Error code and Error Buffer. How to display messages in Log file and Output file? Using FND_FILE.PUT_LINE What is a Trigger ? How many types of Triggers are there? Trigger is a procedure that gets implicitly executed when an insert/update/delete statement is issued against an associated table. Triggers can only be defined on tables not on views, how ever triggers on the base table of a view are fired if an insert/update/delete statement is issued against a view. There are two types of triggers, Statement level trigger and Row level trigger. Insert After / For each row Trigger is fired / Update / Before / For Each statement Delete Can we use Commit in a Database Trigger, if No then why? No. Committing in a trigger will violate the integrity of the transaction. What is Commit, Rollback and Save point? Commit Makes changes to the current transaction permanent. It Erases the savepoints and releases the transaction locks. Savepoint Savepoints allow to arbitrarily hold work at any point of time with option of later committing. They are used to divide transactions into smaller portions. Rollback This statement is used to undo work. What is the difference between DDL, DML and DCL structures? DDL statements are used for defining data. Ex: Create, Alter, Drop,Truncate,Rename. DML statements are used for manipulating data. Ex: Insert, update, truncate. DCL statements are used for to control the access of data. Ex; Grant, Revoke. TCL statements are used for data saving.Ex; Commit,Rollback,Savepoint. How can u create a table in PL/SQL procedure? By using execute immediate statement we can create a table in PLSQL. Begin Execute immediate create table amit as select * from emp; End; All DDL,DML,DCL commands can be performed by using this command. How do we Tune the Queries? Queries can be tuned by Checking the logic (table joins), by creating Indexes on objects in the where clause, by avoiding full table scans. Finally use the trace utility to generate the trace file, use the TK-Prof utility to generate a statistical analysis about the query using which appropriate actions can be taken.

What is Explain Plan? How do u use Explain Plan in TOAD? It is a utility provided by toad that gives the statistics about the performance of the query. It gives information such as number of full table scans occurred, cost, and usage of indexes What is a TK-PROF and its usage? Tk-Prof is a utility that reads the trace files and generates more readable data that gives the statistics about the performance of the query on a line to line basis. What is Optimization? How many types of Optimization are there? Rule based Optimization and Cost Based Optimization. What is the default optimization chosen by Oracle? Cost based Optimization. What is the difference between the snapshot and synonym? 7 A snapshot refers to read-only copies of a master table or tables located on a remote node. A snapshot can be queried, but not updated; only the master table can be updated. A snapshot is periodically refreshed to reflect changes made to the master table. In this sense, a snapshot is really a view with periodicity. 8 A synonym is an alias for table, view, sequence or program unit. They are of two types private and public. What is the difference between data types char and varchar? Char reserves the number of memory locations mentioned in the variable declarations, even though not used (it can store a maximum of 255 bytes). Where as Varchar does not reserve any memory locations when the variable is declared, it stores the values only after they are assigned (it can store a maximum of 32767 bytes). Items are imported from the legacy system using the item import interface using the SRS. How are items imported using the UNIX /PLSQL commands with out using SRS? 1.From the operating system, use CONCSUB to submit a concurrent program. It's an easiest way to test a concurrent program. Normally, CONCSUB submits a concurrent request and returns control to the OS prompt/shell script without waiting for the request to complete. The CONCSUB WAIT parameter can be used to make CONCSUB wait until the request has completed before returning control to the OS prompt/shell script By using the WAIT token, the utility checks the request status every 60 seconds and returns to the operating system prompt upon completion of the request. concurrent manager does not abort, shut down, or start up until the concurrent request completes. If your concurrent program is compatible with itself, we can check it for data integrity and deadlocks by submitting it many times so that it runs concurrently with itself. Syntax: CONCSUB [WAIT= [START=] [REPEAT_DAYS=] [REPEAT_END=] To pass null parameters to CONCSUB, use '""' without spaces for each null parameter. In words: single quote double quote double quote single quote Following is an example of CONCSUB syntax with null parameters: CONCSUB oe/oe OE 'Order Entry Super User' JWALSH CONCURRENT XOE XOEPACK 4 3 '""' 3 2. To Invoke a Concurrent Program using PL/SQL: i) Just insert a row in FND_CONCURRENT_REQUESTS with the apropriate parameters and commit. ii) Invoke the SUBMIT_REQUEST procedure in FND_REQUEST package. FND_REQUEST.SUBMIT_REQUEST( 'AR', 'RAXMTR', '', '', FALSE, 'Autoinvoice Master Program', sc_time, FALSE, 1, 1020, 'VRP', '01-JAN-00', chr(0) How can the duplicate records be deleted from the table? delete from t1 a where rowid not in (select max(rowid) from t1 b where a.no=b.no) What is the significance of _all tables? All tables are multi-org tables which are associated with the company as a whole. Multiple Organizations is enabled in Oracle Applications by partitioning some database tables by the Operating Unit. Other tables are shared across Operating Units (and therefore across set of books). Examples of Applications with partitioned tables are Oracle Payables, Oracle Purchasing, Oracle Receivables, Oracle Projects, Oracle Sales & Marketing etc. The name of each corresponding partitioned table is the view name appended by '_ALL' What are mutating tables? And what is mutating error? A mutating table is a table that is currently being modified by an UPDATE, DELETE, or INSERT statement, or it is a table that might need to be updated by the effects of a declarative DELETE CASCADE referential integrity constraint. A mutating error occurs when a trigger which fires when updation/deletion/insertion is done on a table A performs

insertion/updation/deletion on the same table A. This error results in an infinite loop which is termed as a mutating error. What is difference between oracle 7 andoracle 8i? A) Oracle 7 is a simple RDBMS, where as Oracle 8i is ORDBMS i.e., RDBMS with Object Support. The main add-ons in version 8 are Abstract Data types Varrays PL/SQL Tables Nested Tables Partitioned Tables What is Data cleaning and testing. Data Cleaning: Transformation of data in its current state to a pre-defined, standardized format using packaged software or program modules. Data Testing: The agreed upon conversion deliverables should be approved by the client representatives who are responsible for the success of the conversion. In addition, three levels of conversion testing have been identified and described in the prepare conversion test plans deliverables. Eg: for Summary Balances in GL we set Test Criteria as Record Counts, Hash Totals, Balances, Journal Debit and Credit. While registering a report and a pl/sql block we pass some parameters, for any pl/sql block we pass 2 additional parameters. Can u list them? It requires two IN parameters for a PL/SQL procedure that's registered as a concurrent program in Apps. They are 1. Errcode IN VARCHAR2 2. Errbuff IN VARCHAR2 what is a trace file? when ever an internal error is detected by a process in oracle it dumps the information about the error into a trace file. Alter session set sql_trace=TRUE When do you use Ref Cursors? We base a query on a ref cursor when you want to: 1.More easily administer SQL 2. Avoid the use of lexical parameters in your reports 3. Share data sources with other applications, such as Form Builder 4. Increase control and securityv) Encapsulate logic within a subprogram

What are disadvantage of bulk collection?


Using the BULK COLLECT clause in PL/SQL implies following restrictions: 1. We cannot bulk collect into an associative array having a string type for the key. 2. BULK COLLECT clause can be used only in server-side programs (not in client-side programs) else, error is reported that it is not supported in client-side programs. 3. Collections should be used as target variables listed in a BULK COLLECT INTO clause. 4. Composite targets (such as objects) cannot be used in the RETURNING INTO clause else error is reported for feature with RETURNING clause. 5. Multiple composite targets cannot be used in the BULK COLLECT INTO clause when implicit data type conversions are needed. 6. When an implicit data type conversion is needed, a collection of a composite target (such as a collection of objects) cannot be used in the BULK COLLECT INTO clause.

You might also like