有关sql函数的问题 我写了一个函数: ALTER function [dbo].[f_get_loginName_relate_personnel] (@LoginName varchar(300)) returns varchar(300) as begin declare @personnel varchar(300) if @LoginName is not null select @personnel=name from t_bs_personnel where loginame=@LoginName else set @personnel=isnull(@personnel,@LoginName)
if @personnel='' set @personnel=isnull(@personnel,@LoginName)
return @personnel end
然后我在其他的存储过程调用这个函数:
select i.* ,
isnull(dbo.f_get_loginName_relate_personnel(user_name()), user_name()) as printer, isnull(dbo.f_get_loginName_relate_personnel(i.checking), i.checking ) as checkings, isnull(dbo.f_get_loginName_relate_personnel(i.lister),i.lister ) as listers, isnull(dbo.f_get_loginName_relate_personnel(i.auditing), i.auditing) as auditings, isnull(dbo.f_get_loginName_relate_personnel(i.cancellation), i.cancellation) as cancellations from t_wh_billofdocument as i
ALTER function [dbo].[f_get_loginName_relate_personnel] (@LoginName varchar(300))
returns varchar(300)
as begin
declare @personnel varchar(300)
--如果@loginname 不为 NULL
if @LoginName is not null
--使@personnel等于name
select @personnel=name from t_bs_personnel where loginame=@LoginName
else
--否则,当@personnel为NULL时使其等于@loginname 可是,此时@loginname是NULL! 把NULL替换为NULL?!
set @personnel=isnull(@personnel,@LoginName)
--如果@personnel为空字符串
if @personnel=''
--当@personnel为NULL时,让它等于 @Loginname 可是,既然它为空字符串,怎么还会是NULL呢?! NULL<>''
set @personnel=isnull(@personnel,@LoginName)
return @personnel
end