difference between assingment and : what is the difference between these two ,second is arithmetic expression assigne to sal , first one is ?  how they differ exactly. if salary has intial value of 10 both result same answer. when to use them in oracle based on what  ?
if this is not a good question please disregard .

sal :=sal+300

sal=sal+300;
The second expression is syntactically invalid (at least on its own, it could be a valid part of some other expression).

sal := sal + 300;


assigns a value to the local variable sal that is 300 more than the current value of that variable.

sal = sal + 300


does not change the value of sal.  It compares sal to sal + 300 and evaluates to a boolean.  But it would only be valid in something like an if statement or in a SQL statement, i.e.

IF( sal = sal + 300 )


or 

SELECT *
  FROM emp
 WHERE sal = sal + 300


Neither of those really make sense, though, since that is, by definition, not going to evaluate to true.