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)
)
上記の関数は、指定された @roleid パラメーターに一致する actions_roles テーブルからアクションのリストを返します。ただし、アクション テーブルには、action_roles テーブルにはまったく存在しないアクションがいくつかあります。なので、NULLのパラメータを指定した場合は単純に返す関数にしたい
select * from actions
if ステートメントを使用してみましたが、インライン テーブル関数では機能しないようです。
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)
)
これを達成するための最良の方法は何ですか?