any cursor which can be assigned a dynamic sql statement is called a ref cursor. Generaly it is declared in package so that it becomes global and any query can be attached to it.
Ref cursor are used to define cursor variables. It acts as a pointer for memory area. In a single memory location (context area) we can write any number of select statement. Mainly it is used when you want to fetch data from more than one table.