Q:

MSSQL Server Необязательные параметры в функции

Имею некую функцию, которая возвращает табличное значение.  В ней есть несколько необязательных параметров.  Проблема в том, что при вызове функции (в скуль студии) без указания параметров получаю пустую выборку, а так быть не должно. 
Чувствую, что неверно заданы условия в where.  Но как только не изголялся, работать не хочет как должно. 
Функция выглядит так:  
ALTER FUNCTION dbo. GetPeople(@m_id       INT,
                             @sex        INT = -1,
                             @country_id INT = -1,
                             @city_id    INT = -1)
RETURNS @ReturnTable TABLE(-- тут поля
AS
     BEGIN

         INSERT INTO @ReturnTable(-- тут поля
                FROM users
                WHERE @sex > 0
                      AND sex = @sex
                      AND @country_id > 0
                          AND sex = @sex
                      AND @country_id > 0
                          AND sex = @sex;
         RETURN;
     END;

Вызываю соответственно
SELECT * FROM GetPeople (1234567,DEFAULT,DEFAULT,DEFAULT)

A:

WHERE(@country_id = -1
      AND country_id > 0
      OR @country_id > -1
         AND country_id = @country_id)
     AND (@city_id = -1
          AND city_id > 0
          OR @city_id > -1
             AND city_id = @city_id)
     AND (@sex = -1
          AND sex >= 0
          OR sex > -1
             AND sex = @sex)

вроде подошло

