VERY GENERIC CODE TO find the nth highest salary. SELECT LEVEL, MAX(SAL) FROM K_EMP WHERE LEVEL=N CONNECT BY PRIOR SAL > SAL GROUP BY LEVEL SELECT ' THE 'PARAMETER' OPTION IS NOT INSTALLED' FROM SYS.V_$OPTION WHERE VALUE <> 'TRUE'; We can simply check which features are not installed in the current DB. SELECT BANNER FROM SYS.V_$VERSION; To get the DB version details. DIFFERENCE BETWEEN & AND && "&" is used to create a temporary substitution variable that will prompt you for a value every time it is referenced. SQL> SELECT sal FROM emp WHERE ename LIKE '&NAME'; Enter value for name: SCOTT old 1: SELECT sal FROM emp WHERE ename LIKE '&NAME' new 1: SELECT sal FROM emp WHERE ename LIKE 'SCOTT' SAL ---------- 3000 SQL> / Enter value for name: SCOTT old 1: SELECT sal FROM emp WHERE ename LIKE '&NAME' new 1: SELECT sal FROM emp WHERE ename LIKE 'SCOTT' SAL ---------- 3000 "&&" is used to create a permanent substitution variable. Once you have entered a value (defined the variable) its value will used every time the variable is referenced. SQL> SELECT sal FROM emp WHERE ename LIKE '&&NAME'; Enter value for name: SCOTT old 1: SELECT sal FROM emp WHERE ename LIKE '&&NAME' new 1: SELECT sal FROM emp WHERE ename LIKE 'SCOTT' SAL ---------- 3000 SQL> / old 1: SELECT sal FROM emp WHERE ename LIKE '&&NAME' new 1: SELECT sal FROM emp WHERE ename LIKE 'SCOTT' SAL ---------- 3000 DEFINE also will have the similar functionality. SQL> DEFINE MYNAME='KARTEEK' SQL> DEFINE DEFINE _O_VERSION = "Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production With the Partitioning, OLAP and Oracle Data Mining options DEFINE MYNAME = "KARTEEK" (CHAR) SQL> UNDEFINE MYNAME