Hope, you are aware of Procedures in Plsql. Let us discuss one simple thing which we should always remember while writing the datatype of a parameter for a procedure or a function.
Eg: Create or replace procedure proc1 (Name IN Varchar2(10)) AS.
What's wrong in this? Any guesses?
You should never write Varchar2(10) or Number(2) etc for parameters while creating procedure or function. It's an error.
Just write it like,
Create or replace procedure proc1 (Name IN Varchar2, Sal Number) AS.
Even for the return type of a function.
Inside the declaration section of procedure or function or anonymous block, you should mention the size as Varchar2(20) or Number(3) or so. Otherwise, default size would be assumed depending on the type.