CREATE FUNCTION [dbo].[fn_actions]
(
@roleid varchar(36)
)
RETURNS TABLE
AS
RETURN
select *
from actions
where action_type_id in (
select action_type_id
from action_roles
where role_id = isnull(@roleid,role_id)
)
Вышеприведенная функция возвращает список действий из таблицы actions_roles, который соответствует предоставленному параметру @roleid. Однако в таблице действий есть некоторые действия, которых вообще нет в таблице action_roles. Поэтому, когда указан параметр NULL, я бы хотел, чтобы функция просто возвращала
select * from actions
Я пытался использовать оператор if, но это не работает для встроенной таблицы functions.
CREATE FUNCTION [dbo].[fn_actions]
(
@roleid varchar(36)
)
RETURNS TABLE
AS
RETURN
IF (@roleid is NULL)
BEGIN
select * from actions
END
ELSE
select *
from actions
where action_type_id in (
select action_type_id
from action_roles
where role_id = isnull(@roleid,role_id)
)
Каков наилучший способ добиться этого?