SQL and PL/SQL Interview Questions-2

SQL and PL/SQL Interview Questions-2
 

Q.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. Database Triggers

Q.In a Distributed Database System Can we execute two queries simultaneously ? Justify ?
When 2 people are using DRL command it is possible to execute multiple queries simultaneously.
When we are performing DML operation (update,delete) exclusive lock will be applied on specific record so, DML operation is not possible.
As Distributed database system based on 2 phase commit,one query is independent of 2 nd query so of course we can run.

Q.Can Commit,Rollback ,Savepoint be used in Database Triggers?If yes than HOW? If no Why?With Reasons

we cannot commit inside a trigger.
As we all know that when a dml is complete one can issue a commit.
A trigger if created is fired before the dml completes.
so we cannot commit intermediately.

Q.What will the Output for this Coding?
Declare
Cursor c1 is select * from emp FORUPDATE;
Z c1%rowtype;
Begin
Open C1;
Fetch c1 into Z;
Commit;
Fetch c1 in to Z;
end;
By declaring this cursor we can update the table emp through z,means wo not need to write table name for updation,it may be only by "z".

Q.How we can create a table through procedure ?
You can create table from procedure using Execute immediate command.

Q.What are two parts of package ?
package has two parts
1.Package specification
2.Package body
In the specification,where we declare variable,function,procedure
that is global to the package and local to the schema.
package body contains the defination of the function,procedure.we can also declare private function and procedure which is not accessble
out side the 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.

Q.The most important DDL statements in SQL are?
CREATE TABLE - creates a new database table
ALTER TABLE - alters (changes) a database table
DROP TABLE - deletes a database table
CREATE INDEX - creates an index (search key)
DROP INDEX - deletes an index

Q.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.

Q.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.

Q.What is Correlated Subquery?
Correlated Subquery is a subquery that is evaluated once for each row processed by the parent statement. Parent statement can be Select, Update or Delete. Use CRSQ to answer multipart questions whose answer depends on the value in each row processed by parent statement.

Q.Write the order of precedence for validation of a column in a table ?
I. done using Database triggers.
ii. done using Integarity Constraints.
I & ii.
Exception
First column should be validated by constraints and then Triggers

Q.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.
Two tables are: OLD and NEW.
Insert Trigger :
OLD - no value.
NEW - inserted value.
UPDATE TRIGGER -
OLD- old value.
NEW- new updated value.
DELETE TRIGGER -
OLD - old value.
NEW - no value.

Q.The SELECT INTO Statement is most often used to create backup copies of tables or for archiving records?
SELECT column_name(s) INTO newtable [IN externaldatabase] FROM source
SELECT column_name(s) INTO newtable [IN externaldatabase] FROM source WHERE column_name operator value.

Q.What is Data types?
Max. columns in a table is 255. Max. Char size is 255, Long is 64K & Number is 38 digits.
Cannot Query on a long column.
Char, Varchar2 Max. size is 2000 & default is 1 byte.
Number(p,s) p is precision range 1 to 38, s is scale -84 to 127.
Long Character data of variable length upto 2GB.
Date Range from Jan 4712 BC to Dec 4712 AD.
Raw Stores Binary data (Graphics Image & Digitized Sound). Max. is 255 bytes.
Mslabel Binary format of an OS label. Used primarily with Trusted Oracle.

Q.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)

Q.What is a cursor ? Why Cursor is required ?
The oracle server uses works areas
called private sql area.Here all the DML statement is executed and to processing statement.basically
it's a implicit cursor.
there are two types of cursor
1.Implicit cursor.
2.Explicit cursor.
Implicit cursor is open for all DML statement.after execute the statement cursor is atomatically closed.
Explicit cursor is created by programmer.
explicit cursor is needed when
query returns more than one rows.
In that case,programmer creates
explicit cursor.open the cursor.
then fetch the value from the active set.
after fetching all the value,
cursor is closed by programmer.

Q.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. Database Triggers

Q.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.

Q.Who to put a unique constraint on column if duplicate data is already present in that column?
If duplicate data is already there then instead of putting unique constraint on one column, put unique constraint on two or more columns.

Q.What is SET?
SET command changes the system variables affecting the report environment.

Q.What is Locking?
Locking are mechanisms intended to prevent destructive interaction between users accessing data. Locks are used to achieve.

Q.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. Database Triggers

Q.The INSERT INTO Statements in SQL?
INSERT INTO table_name VALUES (value1, value2,....)
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)

Q.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.

Q.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.

Q.I can not see the answer of the pl/cql code like addition of two no.s. afterall i write dbms_output.put_line('addition is'|| c). Only the line 'PL/SQL procedure successfully completed.' is showing when i end the code by /
before executing the procedure,
set serveroutput on;

Q.Where the Pre_defined_exceptions are stored?
In the standard package.
Procedures, Functions & Packages ;

Q.What is difference between a PROCEDURE & FUNCTION?
A FUNCTION is always returns a value using the return statement.
A PROCEDURE may return one or more values through parameters or may not return at all.

Q.How can a function retun more than one value in oracle with proper example?
yes we can use objects, arrays to return more than one value

Q.How to know the last executed procedure?
Execute procedure name (parameter1,parameter2)
Select timestamps, owner, obj_name, action_name from dba_audit_trail;this statement gives last executed time for procedure , function & package.

Q.Name the tables where characteristics of Package, procedure and functions are stored ?
User_objects, User_Source and User_error.

Q.1)What is the starting "oracle error number"?
2)What is meant by forward declaration in functions?
One must declare an identifier before referencing it. Once it is declared it can be referred even before defining it in the PL/SQL. This rule applies to function and procedures also

Q.What is difference between a PROCEDURE & FUNCTION ?
A FUNCTION is always returns a value using the return statement.
A PROCEDURE may return one or more values through parameters or may not return at all.
In case of function,it must have
return type.
In case of procedure,it may or may n't have return type.
In case of function, only it takes IN parameters
IN case of procedure
only it take IN,OUT,INOUT parameters..

Q.Give the structure of the function ?
FUNCTION name (argument list .....) Return datatype is
local variable declarations
Begin
executable statements
Exception
execution handlers
End;

Q.What is Union?
Union is the product of two or more tables. Which is removed duplicate values from the query.
Union is the product of two or more tables.

Q.What are the components of a PL/SQL Block ?
Declare
variable declaration
Begin
Execution part
Exception
Exception handling
End;
Declarative part, Executable part and Exception part.
Datatypes PL/SQL

Q.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.

Q.What is Synonyms?
Synonyms is the alias name for table, views, sequences & procedures and are created for reasons of Security and Convenience.
Two levels are Public - created by DBA & accessible to all the users. Private - Accessible to creator only. Advantages are referencing without specifying the owner and Flexibility to customize a more meaningful naming convention.

Q.What is COMPUTE?
command control computations on subsets created by the BREAK command.When we are trying to determine the sum of some columns in a result set we can use Compute. This function is used for reporting purpose.

Q.What is the use of CASCADE CONSTRAINTS?
Integrity key is violated when one tried to delete parent key value when foreign key value.
A parent key value can only be deleted after foreign key value.
Cascade constraints has dual purpose.
1.Alter table command can be issued with "ON DELETE CASCADE"
When this is done one can run delete command with cascade constriaint to delete parent key value.
2.To drop a table that has parent values.
With cascade constraint,foreign key constraint on child table and parent table is dropped.The child table still exits.
When this clause is used with the DROP command, a parent table can be dropped even when a child table exists.

Q.The Update Statement in SQL.
UPDATE table_name SET column_name = new_value WHERE column_name = some_value

Q.How Can i convert the Columns In to Row in a oracle Select Query ?
By using matrix report query
Example:
select job,sum(DECODE(deptno,10,sal)) "d10_sal",
sum(DECODE(deptno,20,sal)) "d20_sal",
sum(DECODE(deptno,30,sall)) "d30_sal",
sum(sal) "total"
from emp group by job;

Q.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.

Q.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.
One more point : When we have a variable of typer RECORD we have declare additional variables but with %rowtype, we can only have the fields that are present in the table

Q.How can a function retun more than one value in oracle with proper example?
yes we can use objects, arrays to return more than one value

Q.Write a PL/SQL block to list all the managers
DECLARE
LV_MANAGER_NAME VARCHAR2(100);
LN_COUNT NUMBER;
CURSOR C1 AS
SELECT * FROM EMP_DETAILS WHERE DESIGNATION = 'MANAGER'
BEGIN
LN_COUNT := 0;
FOR EMPDET IN C1 LOOP
LV_MANAGER_NAME := EMPDET.EMP_NAME;
LN_COUNT = LN_COUNT+1;
DBMS_OUTPUT.PUT_LINE('MANAGER '||LN_COUNT||' -> '||LV_MANAGER_NAME);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('EXCEPTION OCCURED:'||SQLERRM);
END;

Q.Explian rowid,rownum?What are the pseduocolumns we have?
ROWID - Hexa decimal number each and every row having unique.Used in searching
ROWNUM - It is a integer number also unique for sorting Normally TOP N Analysys.
Other Psudo Column are
NEXTVAL,CURRVAL Of sequence are some examples

Q.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)

Q.Write a PL/SQL block to update the salary of an employee whose empno is 7839 and print the message as ?Record Updated?.
begin
update employee(tablename) set salary=(salary)*o.1 where empno=7839;
dbms_output.put_line('record updated');
end;
declare
a exception;
begin
update emp set sal=(sal*0.1) where empno=7839;
if sql%rowcount>0 then
dbms_output.put_line(sql%rowcount ||' records are updated' );
else
raise a;
end if;
exception
when a then
dbms_output.put_line('records are not updated');
end;

Q.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.

Q.What is TTITLE and BTITLE?
TTITLE & BTITLE are commands to control report headings & footers.

Q.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.
No, we can not use Commit or Rollback, within a trigger. To understand, take one simple example...
Suppose two persons are using one common table and they both have written trigger on that table. If in the first trigger we are using commit/rollback, then the second use would get some unwanted result.
That is the reason, why we don't use Commit/Rollback in Triggers.
Yeah. If some type of failure/ breakdown occurs, in that case Oracle automatically Rollback the data.

Q.select seq1.nextval from dual
It returns two values at a time.
100
100
Is it possible?If so how?
select naw1.nextval,naw1.currval into n from dual;
Well, in a way it is:
SQL> create sequence foo_seq start with 100 increment by 3;
Sequence created.
SQL> create table dual (dummy varchar2(1));
Table created.
SQL> insert into dual values ('X');
1 row created.
SQL> insert into dual values ('Y');
1 row created.
SQL> commit;
Commit complete.
SQL> select foo_seq.nextval from dual;
NEXTVAL
----------
100
103
SQL>
It's a mean trick to play on developers.

Q.What will the Output for this Coding>
Declare
Cursor c1 is select * from emp FORUPDATE;
Z c1%rowtype;
Begin
Open C1;
Fetch c1 into Z;
Commit;
Fetch c1 in to Z;
end;
By declaring this cursor we can update the table emp through z,means wo not need to write table name for updation,it may be only by "z".
By issuing the TCL like commit or rollback, the cursor will be closed automatically, you cannot fetch again.


Q.How to avoid using cursors? What to use instead of cursor and in what cases to do so?
Just use subquery in for clause
ex:For emprec in (select * from emp)
loop
dbms_output.put_line(emprec.empno);
end loop;
no exit statement needed
implicit open,fetch,close occurs

Q.What are the return values of functions SQLCODE and SQLERRM?
SQLCODE returns the latest code of the error that has occurred.
SQLERRM returns the relevant error message of the SQLCODE.

Q.Explian rowid, rownum?what are the psoducolumns we have?
ROWID - Hexa decimal number each and every row having unique.Used in searching.
ROWNUM - It is a integer number also unique for sorting Normally TOP N Analysys.
Other Psudo Column are
NEXTVAL,CURRVAL Of sequence are some exampls
psudo columns are default columns provided by oracle

Q.Give the Types of modules in a form?
Form
Menu
Library

Q.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.

Q.Can we declare a column having number data type and its scale is larger than pricesion
ex: column_name NUMBER(10,100),
column_name NUMBAER(10,-84)
Yes,we can declare a column with above condition.table created successfully.
yes, 100 is the total size and 10 is included in 100

Q.What is SQL Integrity?
Assures database data and structures reflects all changes made to them in the correct sequence. Locks ensure data integrity and maximum concurrent access to data. Commit statement releases all locks. Types of locks are given below.
Data Locks protects data i.e. Table or Row lock.
Dictionary Locks protects the structure of database object i.e. ensures table's structure does not change for the duration of the transaction.
Internal Locks & Latches protects the internal database structures. They are automatic.
Exclusive Lock allows queries on locked table but no other activity is allowed.
Share Lock allows concurrent queries but prohibits updates to the locked tables.
Row Share allows concurrent access to the locked table but prohibits for a exclusive table lock.
Row Exclusive same as Row Share but prohibits locking in shared mode.
Shared Row Exclusive locks the whole table and allows users to look at rows in the table but prohibit others from locking the table in share or updating them.
Share Update are synonymous with Row Share.

Q.What are the components of a PL/SQL block ?
components of PL/SQL are:
declare:
(optional) variable declare
Begin:
(Mandatory)Procedural statement
Exception:
(optional)
error to be trapped
End:
(Mandatory)
So BEGIN and END are required in PL/SQL block

Q.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.

Q.What are the datatypes a available in PL/SQL ?
1.Character Datatypes:
char(size), nchar(size), varchar2(size), nvarchar2(size),long, raw, longraw
2.Numeric Datatypes number(p,s), numeric(p,s),float, dec(p,s), decimal(p,s),integer, int, smallint,real, double precision
3.Date/Time Datatypes:
date, timestamp, timestamp with local time zone, timestamp with time zone, interval year to month, interval day to second
4.LOB data types:
bfile,blob,clob,nclob
5. Rowid Data types:
rowid,urowid
Some scalar data types such as NUMBER, VARCHAR2, DATE, CHAR, LONG, BOOLEAN. Some composite data types such as RECORD & TABLE.

Q.Explian rowid, rownum? what are the psoducolumns we have ?
ROWID - Hexa decimal number each and every row having unique.Used in searching.
ROWNUM - It is a integer number also unique for sorting Normally TOP N Analysys.
Other Psudo Column are NEXTVAL,CURRVAL Of sequence are some examples
psudo columns are default columns provided by oracle
both rowid n rownum are psedocolumns, but
rowid- is physical address for each record in the memory.
rownum gives the numbering to rows returned by sql select statement.

Q.What is Indexes?
Indexes are optional structures associated with tables used to speed query execution and/or guarantee uniqueness. Create an index if there are frequent retrieval of fewer than 10-15% of the rows in a large table and columns are referenced frequently in the WHERE clause. Implied tradeoff is query speed vs. update speed. Oracle automatically update indexes. Concatenated index max. is 16 columns.

Q.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.

Q.State the difference between implict and explict cursors?
Collapse/Expand Answer of Question State the difference between implict and explict cursors?
Implicit Cursor are declared and used by the oracle internally. whereas the explicit cursors are declared and used by the user. more over implicitly cursors are no need to declare oracle creates and process and closes autometically. the explicit cursor should be declared and closed by the user.
Implicit cursors are used for single row query whereas explicit cursor is used for multiple row query
Do you have any collection of Interview Questions and interested to share with us!!
Please send that collection to iq@GlobalGuideline.Com along with the category and sub category information

Q.What are the modes of parameters that can be passed to a procedure?
IN,OUT,IN-OUT parameters.

Q.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.

Q.How many types of database triggers can be specified on a table? What are they?
Insert Update Delete
Before Row o.k. o.k. o.k.
After Row o.k. o.k. o.k.
Before Statement o.k. o.k. o.k.
After Statement 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 returned Boolean value.

Q.What will be the Output for this Coding
Declare
Cursor c1 is select * from emp FORUPDATE;
Z c1%rowtype;
Begin
Open C1;
Fetch c1 into Z;
Commit;
Fetch c1 in to Z;
By declaring this cursor we can update the table emp through z,means wo not need to write table name for updation,it may be only by "z".
By issuing the TCL like commit or rollback, the cursor will be closed automatically, you cannat fetch again.

Q.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.

Q.What is an oracle stored procedure?

A stored procedure is a sequence of statements that perform specific function.

Q.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. Database Triggers

2 comments:

Thank you very much for this post and it is very helpful for my interview preparation.

function also take in,out,inout

Post a Comment