If you don't specify the semantics of the lenght in your declaration, system depends on NLS_LENGHT_SEMANTICS parameter.
It can be altered on session level.
select * from nls_database_parameters;
1) In stored procedure when i difine
varchar(100) does this means, it takes 100 in bytes.
should i define varchar(100 char) as in database we have defined the col in tables as varchar(100 char).
The same rules apply for PL/SQL as they do for SQL. See the 'Length Semantics' section of the Oracle® Database Globalization Support Guide
If you are defining variables that represent table columns you should define them using
'tableName.columnName%TYPE' to ensure that the definitions are identical and remain so even if the table definition changes.
can it be made schema specific? for char/byte setting.
>can it be made schema specific?
As far a I know: No.
Set it to CHAR on global level to be on the safe side.
Then Your new tables and variables will use CHAR.