Sep 13, 2014

Textual description of firstImageUrl

DBMS_OUTPUT.PUT_LINE not printing - Why do we need set serveroutput on" to see output on console

It is very common problem faced by people trying to execute PL/SQL procedure in SQL Plus or SQL Developer and displaying message or debugging information using DBMS_OUTPUT package. However, no output on console. Why DBMS_OUTPUT.PUT_LINE is not working ? 
DBMS_OUTPUT package enables us to send messages from stored procedures(DBMS server) to client. However, most tools (like SQL*PLUS, SQL developer) do not allocate a buffer for DBMS_OUTPUT to write in this buffer and do not attempt to read from that buffer after PL/SQl program execution.
Fortunately, we have commands (set serveroutput on size <Size of buffer>) to hint DBMS server to dump/flush server output to the client's buffer and client will read from this buffer to display output accordingly.
Before, Oracle 10.2 , there was a upper limit on size of this buffer (limited to one million bytes with a default size of 20,000). However, from oracle 10.2 the upper limit has been removed with restriction on size of buffer, if you specify.We have two cases here:- Specify size of buffer & do not specify size.
  1. If we specify size of buffer:-  Buffer size should be between 2000 and 1 million, else it will throw error.See following execution of set command
        SQL> set serveroutput on size 1000;
        SP2-0547: size option 1000 out of range (2000 through 1000000) 
        SQL> set serveroutput on size 3459988000;
        SP2-0547: size option 3459988000 out of range (2000 through 1000000)
        SQL> set serveroutput on size 30000;   --No error - size in range

  2. If we do not specify size of buffer :- From oracle 10.2 , if you do not specify size of buffer, implicitly buffer size will be set to NULL. NULL means unlimited size of buffer;
    SQL> set serveroutput on    --No error - default size set to NULL

Let's write s small PL/SQL program and see the difference , when server output is on/off. Follow the following diagram: First run: server output OFF, second run - server output ON
In first execution , server output is off so no output message displayed on console. Before second run, we set serveroutput on (as highlighted in above diagram) and this time output message displayed on console.
How do we enable DBMS server output in SQL Developer ?
In SQL Developer also , by default server output is not visible and we need to enable it . Follow the path :  Go to View (menu- bar) -> Open DBMS output .
Now click on , green + button and select the connection from drop down. It will switch on serveroutput.


 ====== End of the article======

Sep 12, 2014

Textual description of firstImageUrl

JavaScript Quiz-1

1. What is outcome of  x == y ? 
var x = "ZYTHAM";             
var y = new String("ZYTHAM");
x==y //prints true/false
Answer: true
== compares values of x and y . Since x and y both has equal values.

2. What will outcome of x === y ?
var x = "ZYTHAM";             
var y = new String("ZYTHAM");
x===y
Answer: false
=== compares both values and type. x is of type String and y is of type Object, It can be verified executing :
typeof x  "string"
typeof  y  "object"

3. What will be outcome of x == y and x === y ?
var x = new String("ZYTHAM");             
var y = new String("ZYTHAM");
x==y //prints true/false
x===y //prints true/false
Answer:  Both prints false.
== prints false because both object are different object. And similarly, === prints false because both are different object.

4. What will be outcome of res and res1 ?
var str = "Nikhil, Ranjan, Devinline";
var res = str.substr(8, 6);
var res1 = str.slice(-17, -11);
Answer: Both will display "Ranjan"
substr(8,6) - starts from index 8 and prints length of 6 char. (start index is 0)
substr(-17,-11) - starts from end(go back 17 chars and then then reaches 11 from end)

5. What will be outcome of below sample unit
var myNumber = 64;
myNumber.toString(16);     
myNumber.toString(8);      
myNumber.toString(2);   
Answer:
myNumber.toString(16);
"40"
myNumber.toString(8);
"100"
myNumber.toString(2);
"1000000"

6. Write a random number generator function in javascript, provided random number should be generated between min and max passed as input.
Answer:
min is included and max is excluded
function getRndomInteger(min, max) {
    return Math.floor(Math.random() * (max - min) ) + min;
}

min and max both are included
function getRndomInteger(min, max) {
    return Math.floor(Math.random() * (max - min + 1) ) + min;
}

7. Predict outcome of sample code ?

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();  
var points = [40, 100, 1, 5, 25, 10];
points.sort();
Answer:-
["Apple", "Banana", "Mango", "Orange"]
[1, 10, 100, 25, 40, 5]

First output looks as expected, but what happened to second array output. By default, the sort() function sorts values as strings. So, "25" is bigger than "100", because "2" is bigger than "1".

8. Sort above array(number array) in ascending order ? Hint: Use compare function in sort function

var points = [40, 100, 1, 5, 25, 10];
function comparefun(a, b){
  return a - b
}
points.sort(comparefun);
On passing a compare function to sort method, sort method sort numbers as follows.
 [1, 5, 10, 25, 40, 100]
Note:- The purpose of the compare function is to define an alternative sort order(instead of natural sort ordering).The compare function should return a negative, zero, or positive value, depending on the arguments:

9. Sorting Object Arrays based on some attributes - Below arrays contains objects. Sort below objects based on salary.
var positions = [
{type:"VP", Salary:80},
{type:"Manager", Salary:40},
{type:"Director", Salary:50}];
Answer:-  positions.sort(function(a, b){return a.Salary - b.Salary});
Above code lines sort positions array of objects in ascending order, same can be validated with following console output

10. Write a compare function to sort array based on type and verify the output.
Answer:
positions.sort(function(a, b){
    var x = a.type.toLowerCase();
    var y = b.type.toLowerCase();
    if (x < y) {return -1;}
    if (x > y) {return 1;}
    return 0;
});