An output parameter can be used to assign a variable the result of a stored procedure. Less used now that we have user-defined functions.
For dynamic Sql, it's something like
declare @cmd varchar(8000), @a char(2)
select @a = 'US'
select @cmd = 'select gemName,gemType,State
from GEmTable where country=' + @a
exec(@cmd)
That's dynamic SQL. A regular query would be
select gemName, gemType, State from GemTable where country = @a