FAQ_ANS 1

Embed Size (px)

Citation preview

  • 8/11/2019 FAQ_ANS 1

    1/38

    1>What are the Advantages of SQL

    * High Speed:

    SQL Queries can be used to retrieve large amounts of

    records from a database quickly and efficiently.

    * Well Defined Standards Exist:SQL databases use long-established standard,

    which is being adopted by ANSI & ISO. Non-SQL

    databases do not adhere to any clear standard.

    * No Coding Required:

    Using standard SQL it is easier to manage database

    systems without having to write substantial amount

    of code.

    * Emergence of ORDBMS:

    Previously SQL databases were synonymous with

    relational database. With the emergence of Object

    Oriented DBMS, object storage capabilities are

    extended to relational databases.

    2>What is join and how many types of joins?

    The purpose of a join is to combine the data across tables.

    A join is actually performed by the where clause which combines the specified rows of

    tables.

    If a join involves in more than two tables then oracle joins first two tables based on the

    joins condition and then compares the result with the next table and so on.TYPES

    Equi join

    Non-equijoin

    Self join

    Natural join

    Cross join

    Outer join

    Left outer

    Right outer

    Full outer

    Inner joinUsing clause

    On clause

    3. Differences between count(1) and count(*).Count(*) will check for all rows and column and takes more time but count(1) will count

  • 8/11/2019 FAQ_ANS 1

    2/38

    directly the rows alone

    4. Differentiate between TRANSLATE and REPLACE.

    TRANSLATE function:

    Translate function does character by character substitution in a string

    format- TRANSLATE(STRING,IF,THEN)

    Translate looks at each character in 'STRING' and then check 'IF' to see if that character is there,

    if it is there then itnotes the position in 'IF' where it found the character and then looks the

    same position in 'THEN'

    for example-

    SELECT TRANSLATE('NOW VOWELS ARE UNDER ATTACK','TAEIOU','Taeiou') FROMdual;

    Result- NoWVoWeLSaReuNDeRaTTaCKthis feature of TRANSLATE, ability to eliminate characters from a string, can prove very useful

    in cleaning up data.

    REPLACE

    REPLACE function replaces a character or characters in a string with zero or more charcters

    REPLACE('ADAH','A','BLAH')

    this evaluate the string 'ADAH'.

    Everywhere an 'A' is found, it will be replaced with a string 'BLAH'

    so the result will be- BLAHDBLAHH2.REPLACE('GEORGE','GE',NULL)

    result- OR

    5. What is composite data type?A composite data typestores values that have internal components. You can pass entire

    composite variables to subprograms as parameters, and you can access internal components

    of composite variables individually. Internal components can be either scalar or composite. You

    can use scalar components wherever you can use scalar variables. PL/SQL lets you define two

    kinds of composite data types, collection and record. You can use composite componentswherever you can use composite variables of the same type.

    6. Differences between CHAR and NCHAR in Oracle.

    http://www.geekinterview.com/question_details/25173http://www.geekinterview.com/question_details/25173http://www.geekinterview.com/question_details/25173http://www.geekinterview.com/question_details/25173
  • 8/11/2019 FAQ_ANS 1

    3/38

    Both CHAR and NCHAR are fixed length character data types. But they have the followingdifferences:

    CHAR's size is specified in bytes by default.

    NCHAR's size is specified in characters by default. A character could be 1 byte to 4 byteslong depending on the character set used.

    NCHAR stores characters in Unicode.

    7. Differences between CHAR and VARCHAR2 in Oracle.

    The main differences between CHAR and VARCHAR2 are:

    CHAR stores values in fixed lengths. Values are padded with space characters to match

    the specified length.

    VARCHAR2 stores values in variable lengths. Values are not padded with any

    characters.

    8. What is an External Table?

    You can use external table feature to access external files as if they are tables inside the

    database.

    When you create an external table, you define its structure and location with in oracle.

    When you query the table, oracle reads the external table and returns the results just as if

    the data had been stored with in the database.

    BENEFITS OF EXTERNAL TABLES

    a) Queries of external tables complete very quickly even though a full table scan id

    required with each access

    b) You can join external tables to each other or to standard tables

    9. Which one is faster delete/truncate? Why?

    Truncante is performs better than delete because when you delete the records from thedatabase, database has to perform 2 actions.

    1.delete from the database

    2.write the deleted records into "rollback" segments.

    But incase of "Truncate" the second activity is not required.

    10. Explain how to DISABLE and ENABLE constraint.

    OPERATIONS WITH CONSTRAINTS

    Possible operations with constraints as follows.

    http://www.geekinterview.com/question_details/17359http://www.geekinterview.com/question_details/17359http://www.geekinterview.com/question_details/17359
  • 8/11/2019 FAQ_ANS 1

    4/38

    Enable

    Disable

    Enforce

    Drop

    ENABLEThis will enable the constraint. Before enable, the constraint will check the existing data.

    Ex:

    SQL>alter table student enable constraint un;

    DISABLE

    This will disable the constraint.

    Ex:

    SQL>alter table student enable constraint un;

    ENFORCE

    This will enforce the constraint rather than enable for future inserts or updates.

    This will not check for existing data while enforcing data.

    Ex:SQL>alter table student enforce constraint un;

    DROP

    This will remove the constraint.

    Ex:

    SQL>alter table student drop constraint un;

    Once the table is dropped, constraints automatically will drop.

    11. Difference between truncate and drop.

    TRUNCATETRUNCATE removes all rowsfrom a table. The operation cannot be rolled back and no triggers

    will be fired. As such, TRUCATE is faster and doesn't use as much undo space as a DELETE.

    SQL> TRUNCATE TABLE emp;

    Table truncated.

    SQL> SELECT COUNT(*) FROM emp;

    COUNT(*)

    ----------

    0

    DROP

  • 8/11/2019 FAQ_ANS 1

    5/38

    The DROP command removes a table from the database. All the tables' rows, indexes and

    privileges will also be removed. No DML triggers will be fired. The operation cannot be rolled

    back.

    SQL> DROP TABLE emp;

    Table dropped.

    SQL> SELECT * FROM emp;

    SELECT * FROM emp

    *

    ERROR at line 1:

    ORA-00942: table or view does not exist

    DROP and TRUNCATE are DDL commands, whereas DELETE is a DML command. ThereforeDELETE operations can be rolled back (undone), while DROP and TRUNCATE operations

    cannot be rolled back.

    From Oracle 10g a table can be "undropped". Example:

    SQL> FLASHBACK TABLE emp TO BEFORE DROP;

    Flashback complete.

    PS: DROP and TRUNCATE are DDL commands, whereas DELETE is a DML command. As

    such, DELETE operations can be rolled back (undone), while DROP and TRUNCATE

    operations cannot be rolled back.

    12. Write a query to display all the odd numbers from a table in which year did most

    employees joined in the company .display the year and the number of employees.

    13. write a correlated sub query to list out the employees.

    14. who earn more than the average salary of their department.

    15. write a query to find nth maximum salary .

    Select *from emp where sal in (select max(sal) from (select *from emp order by sal)

    where rownum

  • 8/11/2019 FAQ_ANS 1

    6/38

    16. Which data type is used for storing graphics and images?

    LONG RAW data type is used for storing BLOB's (binary large objects).

    17. What are various privileges that a user can grant to another user?

    There are two distinct categories of privileges:

    system privileges

    object privileges

    System Privileges

    A system privilege is the right to perform a particular action, or to perform a particular action on

    a particular typeof object. For example, the privileges to create tablespaces and to delete the

    rows of any table in a database are system privileges. There are over 60 distinct system

    privileges.

    Object Privileges

    An object privilege is a privilege or right to perform a particular action on aspecifictable, view,

    sequence, procedure, function, or package. For example, the privilege to delete rows from the

    table DEPT is an object privilege. Depending on the type of object, there are different types of

    object privileges.

    18. What is the difference between joins and set operators?

    JOIN:

    A Join is used for displaying columns with the same or different names from different tables.The output displayed will have all the columns shown individually. i.e. The columns will be

    aligned next to each other.

    UNION:

    The UNION set operator is used for combining data from two tables which have columns with

    the same datatype. When a UNION is performed the data from both tables will be collected in a

    single column having the same datatype.

    19. What is the difference between UNION and UNION ALL?

    Both UNION and UNION ALL concatenate the result of two different SQLs. They differ in the

    way they handle duplicates.

    -UNION performs a DISTINCT on the result set, eliminating any duplicate rows.

  • 8/11/2019 FAQ_ANS 1

    7/38

    -UNION ALL does not remove duplicates, and it therefore faster than UNION.

    20. What is the difference among UNION, MINUS and INTERSECT?

    UNION

    It returns a union of two select statements. It is returning unique (distinct) values of them.

    UNION ALL

    Similar to UNION just that UNION ALL returns also the duplicated values.

    MINUS

    MINUS (also known as EXCEPT) returns the difference between the first and second SELECT

    statement. It is the one where we need to be careful which statement will be put first, cause we

    will get only those results that are in the first SELECT statement and not in the second.

    INTERSECT

    INTERSECT is opposite from MINUS as it returns us the results that are both to be found in first

    and second SELECT statement.

    21. What is Self Join and why is it required?

    A table can be joined to itself in a self-join. Use a self-joinwhen you want to create a result set

    that joins records in a table with other records in the same table. To list a table two times in thesame query, you must provide a table alias for at least one of instance of the table name.

    Syntax:

    The basic syntax of SELF JOINis as follows:

    SELECT a.column_name,b.column_name...

    FROM table1 a,table1 b

    WHERE a.common_field=b.common_field;

    Here, WHERE clause could be any given expression based on your requirement.

    Example:

    Consider the following two tables, (a) CUSTOMERS table is as follows:

    +----+----------+-----+-----------+----------+|ID |NAME |AGE |ADDRESS |SALARY |

    +----+----------+-----+-----------+----------+

    |1|Ramesh|32|Ahmedabad|2000.00|

  • 8/11/2019 FAQ_ANS 1

    8/38

    |2|Khilan|25|Delhi|1500.00||3|kaushik|23|Kota|2000.00|

    |4|Chaitali|25|Mumbai|6500.00|

    |5|Hardik|27|Bhopal|8500.00|

    |6|Komal|22|MP |4500.00|

    |7|Muffy|24|Indore|10000.00|+----+----------+-----+-----------+----------+

    Now, let us join this table using SELF JOIN as follows:

    SQL>SELECT a.ID,b.NAME,a.SALARY

    FROM CUSTOMERS a,CUSTOMERS b

    WHERE a.SALARY

  • 8/11/2019 FAQ_ANS 1

    9/38

    Emp emp2

    where Empname is not null

    order by Empname

    23. How can we transpose a table using SQL (changing rows to column or vice-versa) ?

    24. How to select first 5 records from a table?

    SELECT *

    FROM (your ordered query) alias_name

    WHERE rownum

  • 8/11/2019 FAQ_ANS 1

    10/38

    3.) SQL is executed one statement at a time. PL/SQL is executed as a block of code.

    4.) SQL tells the database what to do (declarative), not how to do it. In contrast, PL/SQL tell

    the database how to do things (procedural).

    5.) SQL is used to code queries, DML and DDL statements. PL/SQL is used to code programblocks, triggers, functions, procedures and packages.

    6.) We can embed SQL in a PL/SQL program, but we cannot embed PL/SQL within a SQLstatement.

    7.) SQL is a language that is used by relational database technologies such as Oracle, Microsoft

    Access, and Sybase etc., PL/SQL is commonly used to write data-centric programs to manipulatedata in an Oracle database. PL/SQL language includes object oriented programming techniques

    such as encapsulation, function overloading, and information hiding (all but inheritance).

    28. What is the use of the group by clause and having clause and with clause ?

    The GROUP BY statement is used in conjunction with the aggregate functions to group the

    result-set by one or more columns.

    SQL GROUP BY Syntax

    SELECT column_name, aggregate_function(column_name)

    FROM table_name

    WHERE column_name operator value

    GROUP BY column_name;

    The HAVING clause was added to SQL because the WHERE keyword could not be used withaggregate functions.

    SQL HAVING Syntax

    SELECT column_name, aggregate_function(column_name)

    FROM table_name

    WHERE column_name operator value

    GROUP BY column_nameHAVING aggregate_function(column_name) operator value;

    WITH Clause:

    The WITH clause, or subquery factoring clause, is part of the SQL-99 standard and was addedinto the Oracle SQL syntax in Oracle 9.2. The WITH clause may be processed as an inline view

    or resolved as a temporary table. The advantage of the latter is that repeated references to the

    subquery may be more efficient as the data is easily retrieved from the temporary table, rather

  • 8/11/2019 FAQ_ANS 1

    11/38

    than being requeried by each reference. You should access the performance implications of

    the WITH clause on a case-by-case basis.

    This article shows how the WITH clause can be used to reduce repetition and simplify complex

    SQL statements. I'm not suggesting the following queries are the best way to retrieve the

    required information. They merely demonstrate the use of the WITH clause.

    Using the SCOTT schema, for each employee we want to know how many other people are in

    their department. Using an inline view we might do the following.

    SELECT e.ename AS employee_name,

    dc.dept_count AS emp_dept_count

    FROM emp e,

    (SELECT deptno, COUNT(*) AS dept_countFROM emp

    GROUP BY deptno) dc

    WHERE e.deptno = dc.deptno;

    Using a WITH clause this would look like the following.

    WITH dept_count AS (

    SELECT deptno, COUNT(*) AS dept_count

    FROM empGROUP BY deptno)

    SELECT e.ename AS employee_name,

    dc.dept_count AS emp_dept_count

    FROM emp e,dept_count dc

    WHERE e.deptno = dc.deptno;

    The difference seems rather insignificant here.

    What if we also want to pull back each employees manager name and the number of people in

    the managers department? Using the inline view it now looks like this.

    SELECT e.ename AS employee_name,dc1.dept_count AS emp_dept_count,

    m.ename AS manager_name,

    dc2.dept_count AS mgr_dept_countFROM emp e,

    (SELECT deptno, COUNT(*) AS dept_count

    FROM emp

    GROUP BY deptno) dc1,

  • 8/11/2019 FAQ_ANS 1

    12/38

    emp m,

    (SELECT deptno, COUNT(*) AS dept_countFROM emp

    GROUP BY deptno) dc2

    WHERE e.deptno = dc1.deptno

    AND e.mgr = m.empnoAND m.deptno = dc2.deptno;

    Using the WITH clause this would look like the following.

    WITH dept_count AS (

    SELECT deptno, COUNT(*) AS dept_countFROM emp

    GROUP BY deptno)

    SELECT e.ename AS employee_name,dc1.dept_count AS emp_dept_count,

    m.ename AS manager_name,

    dc2.dept_count AS mgr_dept_countFROM emp e,

    dept_count dc1,

    emp m,

    dept_count dc2WHERE e.deptno = dc1.deptno

    AND e.mgr = m.empno

    AND m.deptno = dc2.deptno;

    So we don't need to redefine the same subquery multiple times. Instead we just use the queryname defined in the WITH clause, making the query much easier to read.

    29. Diff between Rownumvsrowid?

    Rownum is just the serial No of your output while Rowid is automatically generated unique id of

    a row an it is generated at the time of insertion of row.

    Rownum is numeric and rowid is 16 bit hexadecimal no.

    30. What is the difference between ROWNUM pseudo column and ROW_NUMBER() function?

    ROWNUM is a "pseudocolumn" that assigns a number to each row returned by a query:

    SQL>selectrownum, ename, deptno

    2fromemp;

    ROWNUM ENAME DEPTNO---------- ---------- ----------

  • 8/11/2019 FAQ_ANS 1

    13/38

    1SMITH 99

    2ALLEN 30

    3WARD 304JONES 20

    5MARTIN 30

    6BLAKE 307CLARK 108SCOTT 20

    9KING 10

    10TURNER 3011FORD 20

    12MILLER 10

    ROW_NUMBER is an analytic function that assigns a number to each row according to its

    ordering within a group of rows:

    SQL>selectename, deptno, row_number() over(partitionbydeptnoorderbyename) rn2fromemp;

    ENAME DEPTNO RN

    ---------- ---------- ----------CLARK 101

    KING 102

    MILLER 103FORD 201

    JONES 202

    SCOTT 203

    ALLEN 301BLAKE 302

    MARTIN 303

    TURNER 304WARD 305

    SMITH 991

    31. What are the differences among ROWNUM, RANK and DENSE_RANK?

    Row_number function returns a unique value, when confronted with the same data, ranked

    according to the record in the order of the records in ascending order.

    -----------

    RANK gives you the ranking within your ordered partition. Ties are assigned the same rank,

    with the next ranking(s) skipped. So, if you have 3 items at rank 2, the next rank listed would be

    ranked 5.

    DENSE_RANK again gives you the ranking within your ordered partition, but the ranks are

    consecutive. No ranks are skipped if there are ranks with multiple items.

  • 8/11/2019 FAQ_ANS 1

    14/38

    32. Pseudo columns?

    A pseudocolumnbehaves like a table column, but is not actually stored in the table. You can

    select from pseudocolumns, but you cannot insert, update, or delete their values.

    33. SQL Query to find Max Salary from each department.

    SELECT DeptID, MAX(Salary) FROM EmpDetails GROUP BY DeptID

    34. Lag vs lead functions?

    LAG and LEAD provide a comparison between 2 rows in a table without requiring a self join.

    LAG() provides access to a prior row

    LEAD() provides access to a row after the current position

    35. What are analytical functions?

    Analytic functions compute an aggregate value based on a group of rows. They differ from

    aggregate functions in that they return multiple rows for each group. The group of rows is called

    a windowand is defined by the analytic_clause.

    36. How to delete duplicate values in table?

    delete from where rowid not in

    ( select min(rowid)

    fromexp group by column1..,column2,...column3..);

    37. What are the conversion functions?

    The CONVERT() function is a general function that converts an expression of one data type to

    another.

    The CONVERT() function can be used to display date/time data in different formats.

    Syntax

    CONVERT(data_type(length),expression,style)

    38. IN vs EXISTS operators..give me one scenario?

    IN:

    This will gives the output based on the column and its list of values specified.

    (select * from nani where nno in (12,13);)

    Syntax:

  • 8/11/2019 FAQ_ANS 1

    15/38

    select * from where in ( value1, value2, value3 valuen);

    Ex:

    SQL>select * from student where no in (1, 2, 3);

    NO NAME MARKS

    --- ------- ---------

    1 Sudha 1002 Saketh 200

    1 Jagan 300

    2 Naren 400

    3 Ramesh

    EXISTS

    Exists function is a test for existence. This is a logical test for the return of rows from a

    query.

    Ex:

    Suppose we want to display the department numbers which has more than 4employees.

    SQL>select deptno,count(empno) from emp group by deptno having count(empno) > 4;

    DEPTNO COUNT(*)

    --------- ----------

    20 5

    30 6

    From the above query can you want to display the names of employees?

    SQL>select deptno,ename, count(*) from emp group by deptno,ename having count(*)

    > 4;

    no rows selected

    The above query returns nothing because combination of deptno and ename never

    return more than one count.

    The solution is to use exists which follows.selectdeptno,ename from emp e1 where exists

    (select * from emp e2

    where e1.deptno=e2.deptno group by e2.deptno having count(e2.ename) > 4)

    order by deptno,ename;

    DEPTNO ENAME

    20 ADAMS

    20 FORD

    20 JONES

    20 SCOTT

    20 SMITH

    30 ALLEN

    30 BLAKE

    30 JAMES

    30 MARTIN

    30 TURNER

    30 WARD

  • 8/11/2019 FAQ_ANS 1

    16/38

    39. How to display the column count?

    selectcount(*)

    fromuser_tab_columns

    wheretable_name='MYTABLE'

    40. What is difference between CEIL and FLOOR?

    CEIL

    This will produce a whole number that is greater than or equal to the specified value.

    Syntax: ceil (value)

    Ex:

    SQL>select ceil(5), ceil(5.1), ceil(-5), ceil( -5.1), ceil(0), ceil(null) from dual;

    CEIL(5) CEIL(5.1) CEIL(-5) CEIL(-5.1) CEIL(0) CEIL(NULL)

    --------- ----------- ---------- ------------ -------- --------------

    5 6 -5 -5 0

    FLOOR

    This will produce a whole number that is less than or equal to the specified value.

    Syntax: floor (value)

    Ex:

    SQL>select floor(5), floor(5.1), floor(-5), floor( -5.1), floor(0), floor(null) from

    dual;

    41. What is difference between BTREE INDEX and BINARY INDEX?

    1. B-tree Index has low cardinality values,where as Bitmap Index has High Cardinality values.

    2. B-tree Index is userful for OLTP,where as Bitmap Index is useful for Dataware Housing.3. B-tree index updates on key values has relativelyinexpensive ,where as Bitmap index has

    more expensive.

    42. Difference between where clause and having clause?

    Though the HAVING clause specifies a condition that is similar to the purpose of

    a WHERE clause, the two clauses are not interchangeable. Listed below are some differences tohelp distinguish between the two:

    1. The WHERE clause specifies the criteria which individual records must meet to be

    selcted by a query. It can be used without the GROUP BY clause. TheHAVING clausecannot be used without the GROUP BY clause.

    2. The WHERE clause selects rows beforegrouping. The HAVING clause selects

    rows aftergrouping.3. The WHERE clause cannotcontain aggregate functions.

    The HAVING clause cancontain aggregate functions.

    43. Difference between sub query and correlated subquery?

    http://www.geekinterview.com/question_details/31306http://www.geekinterview.com/question_details/31306http://www.geekinterview.com/question_details/31306http://www.geekinterview.com/question_details/31306
  • 8/11/2019 FAQ_ANS 1

    17/38

    CORRELATED SUBQUERIES: Is evaluated for each row processed by the Main query.

    Execute the Inner query based on the value fetched by the Outer query. Continues till all the

    values returned by the main query are matched. The INNER Query is driven by the OUTERQuery

    EX: SELECT empno,fname,sal,deptid FROMemp

    e WHEREsal=(SELECTAVG(sal)FROMempWHEREdeptid=e.deptid)The Correlated subquery specifically computes theavg (sal) for each department.SUBQUERY: Runs first,executedonce,returns values to be used by the MAIN Query. The

    OUTER Query is driven by the INNER QUERY

    44. What is the difference between CUBE and ROLLUP operators

    CUBE generates a result set that represents aggregates for all combinations of values in theselected columns.

    ROLLUP generates a result set that represents aggregates for a hierarchy of values in theselected columns.

    Difference between CUBE and ROLLUP:

    CUBE ROLLUP

    Its an additional switch to GROUP BY

    clause. It can be applied to allaggregation functions to return cross

    tabular result sets.

    Its an extension to GROUP BY clause. Its used to

    extract statistical and summarized information fromresult sets. It creates groupings and then applies

    aggregation functions on them.

    Produces all possible combinations of

    subtotals specified in GROUP BY

    clause and a Grand Total.

    Produces only some possible subtotal combinations.

    45. What is MERG ? Give me syntax?

    MERGE is a DML command that enables us to optionally update or insert data into a target

    table, depending on whether matching records already exist.

    The syntax of the MERGE statement is:

    MERGE [hint] INTO [schema .]table [t_alias]

    USING [[schema .]table | view | subquery] t_alias

    ON ( condition ) [merge_update_clause | merge_insert_clause]

    http://www.geekinterview.com/question_details/37540http://www.geekinterview.com/question_details/37540http://www.geekinterview.com/question_details/37540http://www.geekinterview.com/question_details/37540
  • 8/11/2019 FAQ_ANS 1

    18/38

    merge_update_clause:

    WHEN MATCHED THEN UPDATE SET [ =

    [|DEFAULT][,]]

    DELETE

    merge_insert_clause:

    WHEN NOT MATCHED THEN INSERT ( [,])

    VALUES (|DEFAULT[,])

    46. Tell me something about synonyms?

    synonyms--is the another name given to DB object.

    used to hide the indentity of the object

    47. What is the difference between primary key and forigen key?

    Primary Key:

    Primary key uniquely identify a record in the table.

    Primary Key can't accept null values.

    By default, Primary key is clustered index and data in the database table is physically organized

    in the sequence of clustered index.

    We can have only one Primary key in a table.

    Foreign Key:

    Foreign key is a field in the table that is primary key in another table.Foreign key can accept multiple null value.

    Foreign key do not automatically create an index, clustered or non-clustered. You can manually

    create an index on foreign key.

    We can have more than one foreign key in a table.

    48. What is collesce and nullif, nvl and nvl2 function?

    BASE TABLE:

    SQL> SELECT * FROM null_test_tab ORDER BY id;

    ID COL1 COL2 COL3 COL4---------- ---------- ---------- ---------- ----------

    1 ONE TWO THREE FOUR

    2 TWO THREE FOUR

    3 THREE FOUR

  • 8/11/2019 FAQ_ANS 1

    19/38

    4 THREE THREE

    NVL

    The NVL function allows you to replace null values with a default value. If the value in the firstparameter is null, the function returns the value in the second parameter. If the first parameter is

    any value other than null, it is returned unchanged.

    We know that COL1 in the test table contains null in all rows except the first. Using

    the NVL function we replace the null values with 'ZERO'.

    SQL> SELECT id, NVL(col1, 'ZERO') AS output FROM null_test_tab ORDER BY id;

    ID OUTPUT

    ---------- ----------

    1 ONE

    2 ZERO3 ZERO

    4 ZERO

    4 rows selected.

    SQL>

    DECODE

    The DECODE function is not specifically for handling null values, but it can be used in a similarway to the NVL function, as shown by the following example.

    SQL> SELECT id, DECODE(col1, NULL, 'ZERO', col1) AS output FROM null_test_tab

    ORDER BY id;

    ID OUTPUT

    ---------- ----------

    1 ONE

    2 ZERO3 ZERO

    4 ZERO

    4 rows selected.

    SQL>

  • 8/11/2019 FAQ_ANS 1

    20/38

    NVL2

    The NVL2 function accepts three parameters. If the first parameter value is not null it returns thevalue in the second parameter. If the first parameter value is null, it returns the third parameter.

    The following query shows NVL2 in action.

    SQL> SELECT id, NVL2(col1, col2, col3) AS output FROM null_test_tab ORDER BY id;

    ID OUTPUT---------- ----------

    1 TWO

    2 THREE

    3 THREE4 THREE

    4 rows selected.

    SQL>

    The first row in the test table has a not null value in COL1, so the value of COL2 is returned. All

    other rows contains null in COL1, so the value of COL3 is returned.

    COALESCE

    The COALESCE function was introduced in Oracle 9i. It accepts two or more parameters and

    returns the first non-null value in a list. If all parameters contain null values, it returns null.

    SQL> SELECT id, COALESCE(col1, col2, col3) AS output FROM null_test_tab ORDER BYid;

    ID OUTPUT---------- ----------

    1 ONE

    2 TWO

    3 THREE

    4 THREE

    4 rows selected.

    SQL>

  • 8/11/2019 FAQ_ANS 1

    21/38

    NULLIF

    The NULLIF function was introduced in Oracle 9i. It accepts two parameters and returns null ifboth parameters are equal. If they are not equal, the first parameter value is returned.

    In our test table the values of COL3 and COL4 are equal in row 4, so we would only expect nullreturned for that row using the following query.

    SQL> SELECT id, NULLIF(col3, col4) AS output FROM null_test_tab ORDER BY id;

    ID OUTPUT

    ---------- ----------

    1 THREE

    2 THREE3 THREE

    4

    4 rows selected.

    SQL>

    49. How to get last day of the month?

    SELECTLAST_DAY(to_date('04/04/1924','MM/DD/YYYY')) fromdual;

    SELECTLAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -1)) fromdual;

    SELECTLAST_DAY(ADD_MONTHS(to_date('04/04/1924','MM/DD/YYYY'), -2)) fromdual;

    50. Primary key vs unique?

    UNIQUE

    This is used to avoid duplicates but it allow nulls.

    We can add this constraint in all three levels.

    Ex:

    COLUMN LEVEL

    SQL>create table student(no number(2) unique, name varchar(10), marks

    number(3));SQL>create table student(no number(2) constraint un unique, name varchar(10),

    marks number(3));

    TABLE LEVEL

    SQL>create table student(no number(2) , name varchar(10), marks number(3),

    unique(no));

    SQL>create table student(no number(2) , name varchar(10), marks number(3),

    constraint un unique(no));

  • 8/11/2019 FAQ_ANS 1

    22/38

    PRIMARY KEY

    This is used to avoid duplicates and nulls. This will work as combination of unique and

    not null.

    Primary key always attached to the parent table.

    We can add this constraint in all three levels.

    Ex:

    COLUMN LEVEL

    SQL>create table student(no number(2) primary key, name varchar(10), marks

    number(3));

    SQL>create table student(no number(2) constraint pk primary key, name varchar(10),

    marks number(3));

    TABLE LEVEL

    SQL>create table student(no number(2) , name varchar(10), marks number(3),

    primary key(no));SQL>create table student(no number(2) , name varchar(10), marks number(3),

    constraintpk primary key(no));

    51. What is view? Tell me different views?

    view is a logical representation of data from one or more than one table.

    It is We can create obj in the table and can use of own reqd query for that view w/o disturb th

    main table

    They are different types

    Simple views

    Complex views

    Read only views

    With check option views

    Materialized views

    52. What is materialized view and difference between view and mview?

    Materialized views will help improving the performance of select statement on view.To crea

    materialized view, the based table should have primary key.Changes to base table will not refle

    on materialized view.

    difference

  • 8/11/2019 FAQ_ANS 1

    23/38

    - A materialized view contains a separate copy of the data. A normal view is just a stored query

    that is always executed at runtime.

    - A materialized view, depending on the system, may be stale, that is, the data in the materialized

    view may not match the latest changes in the base tables. A view is just a stored query that is

    executed at runtime, so the results of querying the view will always match querying the table.

    - A materialized view may be used by the optimizer as a way of pre-aggregating certain

    interesting data sets in order to more efficiently answer business questions. A view is just a

    stored query that is executed at runtime.

    53. What is inline view ?have you ever used?

    In the select statement instead of table name, replacing the select statement is known as

    inline view.

    Ex:

    SQL>Select ename, sal, rownum rank from (select * from emp order by sal);

    54. if a string is there like s1,s2,s3,s4.How to find count of commas in this.

    Select length(s1,s2,s3,s4) length(replace(s1,s2,s3,s4,,) from dual

    55. write sub query for eliminating duplicate rows using analytical function?

    Delete from emp where rowed not in(select min(rowid) from emp group by sno)

    56. How to retrieve a second highest salary from a table? Note:Suppose salaries are in duplicate

    values

    eg: Name Sal Malli 60000 Pandi 60000 Rudra 45000 Ravi 45000.

    Select max(sal) from emp e where 2=(select distinct count(sal) from emp d whered.sal>e.sal)

    57. Differences between Oracle 9i and 10g (Probably in terms of SQL and PL/SQL)?

    58. In a table have one column primary key..it will not allows null values and duplicate

    values..instead of primary key why cant we use unique and not null.these two also doesnt accept

    null values in not null and unique doesnt accept duplicate values? so what is the difeerence

    between(unique,not null) and primary key?

    A primary key isa unique field on a table but it is special in that the table considers that row its

    key. That means that other tables can use this field to create foreign key relationships tothemselves.A unique constraint simply means that a particular field must be unique.

  • 8/11/2019 FAQ_ANS 1

    24/38

    59. What is save point and commit?

    You can use the COMMIT, ROLLBACK, SAVEPOINT, and SET TRANSACTION commandto control the transaction.

    1.

    COMMIT: COMMIT command to make changes permanent save to a database duringthe current transaction.

    2. ROLLBACK: ROLLBACK command execute at the end of current transaction and

    undo/undone any changes made since the begin transaction.3. SAVEPOINT: SAVEPOINT command save the current point with the unique name in

    the processing of a transaction.

    4. AUTOCOMMIT: Set AUTOCOMMIT ON to execute COMMIT Statementautomatically.

    5. SET TRANSACTION: PL/SQL SET TRANSACTION command set the transaction

    properties such as read-write/read only access.

    60. What is the global temporary tables?

    These tables do not reside in the system catalogs and are not persistent. Temporary tables exist

    only during the connection that declared them and cannot be referenced outside of thatconnection. When the connection closes, the rows of the table are deleted, and the in-memorydescription of the temporary table is dropped.

    Temporary tables are useful when:

    The table structure is not known before using an application.

    Other users do not need the same table structure. Data in the temporary table is needed while using the application.

    The table can be declared and dropped without holding the locks on the system catalog.

    The data in a global temporary table is private, such that data inserted by a session can only be

    accessed by that session. The session-specific rows in a global temporary table can be preservedfor the whole session, or just for the current transaction. The ON COMMIT DELETE ROWS

    clause indicates that the data should be deleted at the end of the transaction.

    Syntax

    DECLARE GLOBAL TEMPORARY TABLEtable-Name

    { column-definition [ , column-definition ] * }[ ON COMMIT {DELETE | PRESERVE} ROWS ]

    NOT LOGGED [ON ROLLBACK DELETE ROWS]

    61. What is index organized table?

    An index-organized table(IOT)is a type oftablethat storesdatain aB*Treeindex structure.

    http://way2tutorial.com/plsql/plsql_transaction.php#commithttp://way2tutorial.com/plsql/plsql_transaction.php#commithttp://way2tutorial.com/plsql/plsql_transaction.php#rollbackhttp://way2tutorial.com/plsql/plsql_transaction.php#rollbackhttp://way2tutorial.com/plsql/plsql_transaction.php#savepointhttp://way2tutorial.com/plsql/plsql_transaction.php#savepointhttp://way2tutorial.com/plsql/plsql_transaction.php#autocommithttp://way2tutorial.com/plsql/plsql_transaction.php#autocommithttp://way2tutorial.com/plsql/plsql_transaction.php#set_transactionhttp://way2tutorial.com/plsql/plsql_transaction.php#set_transactionhttp://docs.oracle.com/javadb/10.6.1.0/ref/rrefdeclaretemptable.html#rrefdeclaretemptable__tempcoltablenamehttp://docs.oracle.com/javadb/10.6.1.0/ref/rrefdeclaretemptable.html#rrefdeclaretemptable__tempcoltablenamehttp://docs.oracle.com/javadb/10.6.1.0/ref/rrefdeclaretemptable.html#rrefdeclaretemptable__tempcoltablenamehttp://www.orafaq.com/wiki/IOThttp://www.orafaq.com/wiki/IOThttp://www.orafaq.com/wiki/IOThttp://www.orafaq.com/wiki/Tablehttp://www.orafaq.com/wiki/Tablehttp://www.orafaq.com/wiki/Tablehttp://www.orafaq.com/wiki/Datahttp://www.orafaq.com/wiki/Datahttp://www.orafaq.com/wiki/Datahttp://www.orafaq.com/wiki/B*Treehttp://www.orafaq.com/wiki/B*Treehttp://www.orafaq.com/wiki/B*Treehttp://www.orafaq.com/wiki/B*Treehttp://www.orafaq.com/wiki/Datahttp://www.orafaq.com/wiki/Tablehttp://www.orafaq.com/wiki/IOThttp://docs.oracle.com/javadb/10.6.1.0/ref/rrefdeclaretemptable.html#rrefdeclaretemptable__tempcoltablenamehttp://way2tutorial.com/plsql/plsql_transaction.php#set_transactionhttp://way2tutorial.com/plsql/plsql_transaction.php#autocommithttp://way2tutorial.com/plsql/plsql_transaction.php#savepointhttp://way2tutorial.com/plsql/plsql_transaction.php#rollbackhttp://way2tutorial.com/plsql/plsql_transaction.php#commit
  • 8/11/2019 FAQ_ANS 1

    25/38

    Normal relational tables, calledheap-organized tables,store rows in any order (unsorted). In

    contrast to this, index-organized tables store rows in a B-tree index structure that is logically

    sorted in primary key order.

    62. How many triggers can be applied to a table?

    Insert/Update/Delete :- 3

    Before/After:- 2

    Row Level/Statement Level:-2

    Hence 3*2*2

    63. If a cursor is open, how can we find in a PL/SQL Block?

    We can use %ISOPEN clause, a keyword provided by oracle to check whether the cursor is inopen state.

    e.gDeclare...

    cursor c1 is select emp_name from emp;

    Begin

    if c1%ISOPEN then...

    End;

    64. 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 recRECORD is to be used whenever query returns columns of differenttable or views and

    variables. E.g. TYPE r_emp is RECORD (enoemp.empno% type,enameempename%type); e_recemp% ROWTYPE cursor c1 is select empno,deptno from emp; e_rec c1

    %ROWTYPE.

    65. Differ between DECODE and CASE.

    Decode: column wise execution.Case: rowwise execution.

    Difference between DECODE and CASE:Everything DECODE can do, CASE can. There is a lot more that you can do with CASE, though, which DECODE cannot. Following is the list of differences -1. DECODE can work with only scaler values but CASE can work with logical oprators, predicates and searchable subqueries.2. CASE can work as a PL/SQL construct but DECODE is used only in SQL statement.CASE can be used as parameter of a function/procedure.3. CASE expects datatype consistency, DECODE does not.

    http://www.orafaq.com/wiki/Heap-organized_tablehttp://www.orafaq.com/wiki/Heap-organized_tablehttp://www.orafaq.com/wiki/Heap-organized_tablehttp://www.orafaq.com/wiki/Heap-organized_table
  • 8/11/2019 FAQ_ANS 1

    26/38

    4. CASE complies with ANSI SQL. DECODE is proprietary to Oracle.5. CASE executes faster in the optimizer than does DECODE.6. CASE is a statement while DECODE is a function. Read more at: http://www.queryhome.com/32211/what-the-difference-between-decode-and-case-statement-oracle

    66. Explain polymorphism in PL/SQL.Polymorphism is a feature of object-oriented programming, is the ability to create a variable, a

    function, or an object that has more than one form.

    67. What is pragma? types in pragma?

    Pragma is a keyword in oracle pl/sql.That is used to provide an instruction to compiler.

    Pragama is compiler directive .

    Example of Autonomous transactions

    Suppose you are updating value from table and you don't have update trigger on that table

    but still you want to maintain a log entry for this update in separate table.

    You can write a procedure and call that procedure to do this . But you can not use "COMMIT" in

    this called procedure because it will save the entire transaction.

    To avoid this you can declare this procedure as autonomous transaction procedure so that the

    execution of this procedure will be treated as totally diff. transaction and you can issue commit

    in called procedure without affecting the main transaction.

    Different types of Pragama are

    * EXCEPTION_INIT* RESTRICT_REFERENCES

    * SERIALLY_REUSABLE

    68. What is difference between procedure and trigger ?

    Both are database objects containing blocks lof code that can be used for implementing business

    logic

    The differences are:

    1)Triggers fire automatically but they need events for that.(Example: create,alter,drop,insert,delete,update)

    Procedures have to be explicitly called and then executed.

    They do not need create,alter,drop,insert,delete,update.

  • 8/11/2019 FAQ_ANS 1

    27/38

    we can also execute procedures automatically using the sp_procoption.

    2))we cannot pass parameters inside the triggers,but we can pass parameters inside stored procedures

    -------------------

    example: if we want to display a message "error"

    using a trigger: we need some DDL/DML Statement

    using a procedure: NO DDL/DML is needed

    69. What is mutating error ..how to avoid it.

    Mutating error normally occurs when we are performing some DML operations and we are

    trying to select the affected record from the same trigger. So basically we are trying to select

    records in the trigger from the table that owns the trigger. This creates inconsistency and Oraclethrows a mutating error.

    http://decipherinfosys.wordpress.com/2009/06/22/mutating-tabletrigger-error-and-how-to-resolve-it/

    70. What is dynamic sql?

    Dynamic SQLis aSQLstatement that is constructed and executed at program execution time.

    In contrast to this, static SQL statements are hard-coded in the program and executed "as-is" at

    run-time. Dynamic SQL provides more flexibility, nevertheless, static SQL is faster and more

    secure than dynamic SQL.

    71. Tell me everything about cursors?

    Cursor is a pointer to memory location which is called as context area which contains the

    information necessary for processing, including the number of rows processed by the

    statement, a pointer to the parsed representation of the statement, and the acti ve set which

    is the set of rows returned by the query.

    Cursor contains two parts

    Header

    Body

    Header includes cursor name, any parameters and the type of data being loaded.

    Body includes the select statement.

    Ex:Cursor c(dno in number) return dept%rowtype is select *from dept;

    In the above

    Headercursor c(dno in number) return dept%rowtype

    Bodyselect *from dept

    CURSOR TYPES

    Implicit (SQL)

    Explicit

    http://www.orafaq.com/wiki/SQLhttp://www.orafaq.com/wiki/SQLhttp://www.orafaq.com/wiki/SQLhttp://www.orafaq.com/wiki/SQL
  • 8/11/2019 FAQ_ANS 1

    28/38

    Parameterized cursors

    REF cursors

    CURSOR STAGES

    Open

    FetchClose

    CURSOR ATTRIBUTES

    %found

    %notfound

    %rowcount

    %isopen

    %bulk_rowcount

    %bulk_exceptions

    CURSOR DECLERATIONSyntax:

    Cursor is select statement;

    Ex:

    Cursor c is select *from dept;

    72. Can you tell me about exceptions?

    PL/SQL provides a feature to handle the Exceptions which occur in a PL/SQL Block known as

    exception Handling. Using Exception Handling we can test the code and avoid it from exiting

    abruptly.

    When an exception occurs a messages which explains its cause is recieved.

    PL/SQL Exception message consists of three parts.

    1) Type of Exception

    2) An Error Code

    3) A message

    There are 3 types of Exceptions.

    a) Named System Exceptions

    `b) Unnamed System Exceptionsc) User-defined Exceptions

    73. What are advantages of packages?

    Modularity,Easier Application Design,InformationHiding,AddedFunctionality,Better

    Performance

  • 8/11/2019 FAQ_ANS 1

    29/38

  • 8/11/2019 FAQ_ANS 1

    30/38

    Varrays(short for variable-size arrays) hold a fixed number of elements (although you

    can change the number of elements at runtime). They use sequential numbers as

    subscripts. You can define equivalent SQL types, allowing varrays to be stored indatabase tables. They can be stored and retrieved through SQL, but with less flexibility

    than nested tables.

    78. What is SQLCODE and SQLERRM?

    SQL CODE Function:

    The function SQLCODE returns the number code of the most recent exception.

    SQL ERRM Function:

    The function SQLERRM returns the error message associated with its error-number argument. If

    the argument is omitted, it returns the error message associated with the current value

    of SQLCODE. SQLERRM with no argument is useful only in an exception handler. Outside ahandler, SQLERRM with no argument always returns the normal, successful

    completion message. For internal exceptions, SQLERRM returns the message associated with

    the Oracle error that occurred. The message begins with the Oracle error code.

    Example:

    DECLARE

    nameemployees.last_name%TYPE;

    v_code NUMBER;v_errmVARCHAR2(64);

    BEGINSELECT last_name INTO name FROM employees WHERE employee_id = 1000;EXCEPTION

    WHEN OTHERS THEN

    v_code := SQLCODE;

    v_errm := SUBSTR(SQLERRM, 1 , 64);DBMS_OUTPUT.PUT_LINE('The error code is ' || v_code || '- ' || v_errm);

    END;

    79. What is exception? Tell me some seeded exceptions?

    An error condition during a program execution is called an exception in PL/SQL. PL/SQLsupports programmers to catch such conditions using EXCEPTIONblock in the program and an

    appropriate action is taken against the error condition. There are two types of exceptions:

    System-defined exceptions

    User-defined exceptions

    80. What are the conditional statements?

  • 8/11/2019 FAQ_ANS 1

    31/38

    IF THEN ELSE STATEMENT

    1)

    IF conditionTHEN

    statement 1;ELSEstatement 2;

    END IF;

    81. What is NOCOPY? And where we can use this?

    NOCOPY will instruct Oracle to pass the argument as fast as possible. This can significantly

    enhance performance when passing a large value.

    82. What is difference between raise and raise application error

    Raise command is used for raise an user defined exception.

    Raise_application_error is a procedrue in dbms_standardpackage..It will raise the user defined

    error message and error number.

    Error number range will be from -20000 to -20999. Error msg length can be 2048 bytes..(newversions may be more than this).

    example*******

    create or replace trigger dummy before insert on emp for each row

    begin

    If :new.sal>5000 thenraise_application_error(-20115,' sorry invalid salary');

    end if;

    end;

    example for Raise

    ***************

    declare

    sample exception;

    begin

    if a > b then

  • 8/11/2019 FAQ_ANS 1

    32/38

    raise sample;

    end if;

    exception

    when sample then

    do something...

    end;

    83. What are formal and actual parameters?

    Actual Parameters : Subprograms pass information using parameters. The variables or

    expressions referenced in the parameter list of a subprogram call are actual parameters. For

    example, the following procedure call lists two actual parameters named emp_num and amount:Eg. raise_salary(emp_num, amount);

    Formal Parameters : The variables declared in a subprogram specification and referenced in thesubprogram body are formal parameters. For example, the following procedure declares two

    formal parameters named emp_id and increase: Eg. PROCEDURE raise_salary (emp_id

    INTEGER, increase REAL) IS current_salary REAL;

    84. Difference between nested tables and varrays?

    Nested Table Collections:

    Nested table collections are an extension of the index-by tables. The main difference between thetwo is that nested tables can be stored in a database column but index-by tables cannot. Inaddition some DML operations are possible on nested tables when they are stored in the

    database. During creation the collection must be dense, having consecutive subscripts for the

    elements. Once created elements can be deleted using the DELETE method to make the

    collection sparse. The NEXT method overcomes the problems of traversing sparse collections.

    Varray Collections:

    A VARRAY is similar to a nested table except you must specifiy an upper bound in the

    declaration. Like nested tables they can be stored in the database, but unlike nested tables

    individual elements cannot be deleted so they remain dense.

    85. What is bulk collect and give me syntax?

    Bulk binds can improve the performance when loading collections from a queries. The BULKCOLLECT INTO construct binds the output of the query to the collection. To test this create the

    following table.

    Example:

  • 8/11/2019 FAQ_ANS 1

    33/38

    PROCEDURE process_all_rows

    IS

    TYPE employees_aatIS TABLE OF employees%ROWTYPE

    INDEX BY PLS_INTEGER;

    l_employeesemployees_aat;BEGINSELECT *

    BULK COLLECT INTO l_employees

    FROM employees;

    FOR indx IN 1 ..l_employees.COUNT

    LOOP

    analyze_compensation(l_employees(indx));

    END LOOP;

    END process_all_rows;

    86. What is weak and strong refcursor and give example?

    Ref cursor is a cursor variable which acts as a pointer to

    the sql memory area.

    Ref cursor can be asssociated with multiple sql statementswhere as a cursor can be associated with only one sql

    statement.

    Refcursor is dynamic where as cursor is static.

    Ref cursors are of two types:1)strong ref cursor:whichretuns value.

    2)week ref cursor:which doesn't return value.

    For the strong ref cursor the returning columns with

    datatype and length need to be known at compile time.

    For the weak ref cursor the structure does not need to be

    known at compile time.

    TYPE WEAK_REF_CURSOR IS REF CURSOR;

    TYPE STRONG-_ REF_CURSOR IS REF CURSOR RETURN

    TABLE_NAME%ROWTYPE;

    87. What is authidclause ?

    The AUTHID clause instructs Oracle as to whether the routine is to be run with the invoker's

    rights (CURRENT_USER), or with the Owner rights (DEFINER). If the clause is not specified,

    Oracle will default to using the AUTHID DEFINER.

  • 8/11/2019 FAQ_ANS 1

    34/38

    88. Where current of clause?

    If you plan on updating or deleting records that have been referenced by aSELECT FOR

    UPDATEstatement, you can use the WHERE CURRENT OFstatement.

    SYNTAX

    The syntax for the WHERE CURRENT OF statementin Oracle/PLSQL is either:

    UPDATE table_name

    SET set_clause

    WHERE CURRENT OF cursor_name;

    89. What is difference betweenforall loop and for loop?FOR is an actual loop which will go through records one by one and do some processing.

    FORALL is NOT an actual loop, it's just a notation for a bulk DML operation. It will NOT go

    through rows one by one. For example, you can do some row processing in a FOR loop, but you

    won't be able to do it in FORALL.

    90. What is forward declaration and where we can use this?

    PL/SQL allows for a special subprogram declaration called a

    forward declaration. It consists of the subprogram

    specification in the package body terminated by a semicolon.You can use forward declarations to do the following:

    ? Define subprograms in logical or alphabetical order.

    ? Define mutually recursive subprograms.(both calling eachother).

    ? Group subprograms in a package

    Example of forward Declaration:

    CREATE OR REPLACE PACKAGE BODY forward_pack

    IS

    PROCEDURE calc_rating(. . .); -- forward declarationPROCEDURE award_bonus(. . .)

    IS -- subprograms defined

    BEGIN -- in alphabetical ordercalc_rating(. . .);

    . . .

    END;

    http://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.php
  • 8/11/2019 FAQ_ANS 1

    35/38

    PROCEDURE calc_rating(. . .)

    IS

    BEGIN. . .

    END;

    END forward_pack;

    91. What are who columns? Why we can use in the tables?

    WHO columns are used to track the information updated or inserted by the users against the

    tables. FND_STANDARD package is used for this purpose. FND_STANDARD.SET_WHOProcedure is used to update the WHO columns in aTable when a DML operation s (i.e. INSERT,

    UPDATE) performed.1) Created by2) Creation date3) Last _updated_by4) last_update_date5)

    last_update_login

    Use fnd_profile.VALUE (USER_ID) for retrieving the user_id which will be used by

    created_by column.

    Creation date and last_update_date will be normally SYSDATE.

    last_updated_by is same as created_by.

    Use USERENV (SESSIONID) for getting the last_update_login id

    92. What is Exception of propagation?

    A PL/SQL program is an anonymous block, a procedure, or a function. This program, or

    highest-level block, can call other procedures or functions, or nest an anonymous block withinthat block. So at any given point in execution, there might be several layers of PL/SQL blocks

    nested within other blocks. Each PL/SQL block can have its own exception section, or it can be

    totally void of exception handlers.

    To determine the appropriate exception-handling behavior, PL/SQL follows rules regarding:

    Scope - The PL/SQL block or blocks in which an exception can be raised and handled.

    Propagation - The way in which an exception is passed back through enclosing blocks until it is

    handled or is resolved to be an unhandled exception

    93. How to tune oracle sql queries give me step by step?

    The three basic steps of SQL tuning is listed here.

    Step1:At first we need to identified the high load SQLs or top SQLs that are responsible for

    performance problem or in another word the sql that consume application workload and system

    resources. We can easily identify them by reviewing past SQL execution history available in the

    system.

    Step 2:Now generate execution plan of those high load sql statements and verify that the

    execution plans produced by the query optimizer for these statements perform reasonably.

  • 8/11/2019 FAQ_ANS 1

    36/38

    Step 3:Implement corrective actions to generate better execution plans for poorly performing

    SQL statements. While taking corrective actions there is many considerations. Hopefully I will

    discuss these consideration in my blogs one by another.

    94. we have a package and we have grants to execute that package inside of that we have table,

    here we don't have privileges to this table? whether this package will execute or not?Yes, this package will execute.example:- suppose we have create a package inside any user

    create or replace package sn_pck is

    procedure sn_pr(c out number);end;

    create or replace package body scn_pck is

    procedure sn_pr(c out number) isbegin

    select b into c from sn where name='sony';

    DBMS_OUTPUT.PUT_LINE(C);END;END;

    after that you shd connect hr userand execute that package it execute 100%

    how u will execute on hr user:-

    declare

    e number;

    beginprativa.sn_pck(e);

    end;

    note:- here i hv created that package in a user named prativa

    and in user i hv create a table sn

    95. Explain the usage of WHERE CURRENT OF clause in cursors ?

    If you plan on updating or deleting records that have been referenced by aSELECT FORUPDATEstatement, you can use the WHERE CURRENT OFstatement.

    SYNTAX

    The syntax for the WHERE CURRENT OF statementin Oracle/PLSQL is either:

    UPDATE table_name

    http://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.phphttp://www.techonthenet.com/oracle/cursors/for_update.php
  • 8/11/2019 FAQ_ANS 1

    37/38

    SET set_clause

    WHERE CURRENT OF cursor_name;

    96. What is difference between select statement and cursor?

    Normal select Query fetches all rows in one go while cursor

    fetches one row at a time.

    97. what is the difference between pragma exception_init and raise_application_error?

    PRAGMA EXCEPTION_INIT allows to associate an Oracle error

    number with the name of a user-defined error. Here you need

    to defined user-defined exception before it is used inPRAGMA EXCEPTION_INIT. There are two parameters: exception

    name and error code.

    RAISE_APPLICATION_ERROR allows to create meaningful errormsg.it works with un-named user defined exceptions. It

    associates the number of the error with the text of theerror. Therefore, the user-defined exception does nat have a

    name associated with it. There are three parameter:

    err_number, err_msg, keep-err

    98. what is difference between pass by value and reference by value in oracle plsql?

    In parameters by default call by reference where as out and in out call by value.

    corresponding formal parameter.parameter passed by value it copies the value of the actual parameter to the formal

    parameter.

    99. How can we Get the Updated Rows? ie, There is 100s of Rows i updated the Rows who have

    salary 5000. then i want to select the Updated Rows. How can we achieve it?

    create table t1 as select * from emp where 1=2;

    create or replace trigger t1

    after update on emp

    for eachrow

    begin

    insert into t1

  • 8/11/2019 FAQ_ANS 1

    38/38

    values(empno,'ename',job,'hiredate',sal,comm,deptno);

    end;

    after create trigger

    then u updated.