How to use IN clause in sql server so that it selects everything if nothing is provided for its list argument?
So how do I get ALL rows if nothing is passed into IN clause?


You have to use dynamic sql.

e.g. Below is a simple example to get you started.

set nocount on
declare @sqltext nvarchar(max) = N''
declare @countryInput varchar(30)  

select @sqltext = N'
    select * -- good practice to use explicit column names 
        from dbo.Table
        where 1 =1 '
        + case when @countryInput is null or @countryInput ='' then ''
        else ' and country in (''USA'',''UK'')'
        end

        print @sqltext