
Nothing in PL/SQL is case sensitive. So you can issue a SELECT or a select, and the results will be the same.
In many scenarios, PL/SQL can figure out what the name you are referring to based on the context. However there are times when a name may be ambiguous. At that point, PL/SQL will look to the following object in this order to figure out which one you are referring to: column name --> variable name --> table name.
For example, suppose you have a column, variable, and table all named TEMP. If you refer to TEMP in the WHERE clause, PL/SQL knows you mean a table from the context. However if you reference TEMP elsewhere, then PL/SQL will first consider it to be a column name first.