Вы можете проверить, что параметр равен нулю, используя ISNULL
, в этом случае он вернет userId, поэтому он вернет все роли следующим образом:
CREATE FUNCTION fn_roles(@userid varchar(36))
RETURNS TABLE
AS
RETURN
select * from user_roles
where userid = ISNULL(@userid,userid)