我有以下SQL函数在变量中放入一个NULL值,因为表中没有相应的记录,它正在获取csv.string_val。
create function dbo.MyFunctionName (@ticket_id int)
returns nvarchar(max)
as
BEGIN
declare @assignees nvarchar(max)
set @assignees = ''
select @assignees = @assignees + '; ' + csv.string_val
from database.incident_table cr join assignment_table asg
on asg.item_id = cr.id
join user_table au on asg.app_user_id = au.app_user_id
join user_link_table aupl on aupl.app_user_id = au.app_user_id
join system_value_table csv on csv.owner_id = aupl.user_prof_id
left join system_config_table cs on cs.cfg_setting_id = csv.cfg_setting_id
where asg.item_defn_id = 648
and cs.cfg_setting_const = 'username'
and csv.cfg_setting_owner_type_name = 'USER_PROFILE'
and asg.item_id = @ticket_id
if len(@assignees) >= 3 set @assignees = right(@assignees, len(@assignees) - 2)
return @assignees
END
问题是当assignment_table中没有票号的记录时,@ seignees变量为null,我得到“传递给RIGHT函数的参数无效。”
我显然有脑痉挛,因为如果@assignees参数为null,我无法弄清楚如何让它不执行RIGHT()函数。我确定答案很简单,但此刻它正在逃避我。
编辑:使用STUFF和FOR XML为我修复它。