我写了以下功能。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create FUNCTION NameFunction
(
@eid int
)
RETURNS varchar
AS
BEGIN
Declare @logid varchar(50);
SELECT @logid = E.LoginId from HumanResources.Employee As E
where E.BusinessEntityID = @eid
RETURN @logid
END
GO
当我执行时,它显示结果为a
。
但预期的结果是adventure-works\terri0
我在哪里犯了错误。只有第一个角色来了。需要改变什么?
答案 0 :(得分:21)
更改您的RETURN
类型以包含长度,此时它只返回1个字符:
RETURNS varchar(100)
完整代码:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create FUNCTION NameFunction
(
@eid int
)
RETURNS varchar(100) -- or whatever length you need
AS
BEGIN
Declare @logid varchar(50);
SELECT @logid = E.LoginId from HumanResources.Employee As E
where E.BusinessEntityID = @eid
RETURN @logid
END
GO
答案 1 :(得分:11)
RETURNS varchar
应为RETURNS varchar(50)
。
varchar
在此上下文中被解释为varchar(1)
(在varchar(30)
的上下文中被解释为CAST
。