2015-08-25 6 views
0

Предположим, у меня есть таблица с именем t_employee, которая имеет столбец имен и столбец company_id. У меня есть хранимая процедура, где я могу перечислить все сотрудник или только для компании,sql join with default parameter

create procedure p_listEmployees(@companyID integer = null) 

В процедуре, а не говорить, если @companyID равно нулю ..... я предпочел бы иметь дело присоединиться с тем, что я могу или не могу фильтровать. Я уверен, что некоторое время назад я видел это, используя COALESC.

любые мысли?

+0

[Динамические условия поиска в T-SQL] (http://www.sommarskog.se/dyn-search-2008.html) –

ответ

0

Что-то вроде этого:

from t_employee e left join company c on c.company_id = e.company_id 
where (@companyId is not null and e.company_id = @companyId) 
or @companyId is null 

Обратите внимание, что это левое соединение.

1
from t_employee e left join company c on COALESCE(c.company_id,1) = COALESCE(e.company_id,1)