【发布时间】:2020-08-26 10:32:54
【问题描述】:
我在这个示例中使用 AdventureWorks 2007,尝试输入员工的生日并返回他们的年龄
CREATE FUNCTION UDF_EmpAge (@BusinessEntityID VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @Emp_Age VARCHAR(50)
SET @Emp_Age = (SELECT DATEDIFF(YY,[BirthDate],GETDATE()) FROM HumanResources.Employee)
RETURN
(
SELECT @Emp_Age
FROM HumanResources.Employee
WHERE BusinessEntityID = @BusinessEntityID
)
END
GO
例如当我尝试运行它时
SELECT dbo.UDF_EmpAge(2)
消息 512,第 16 级,状态 1,第 50 行
子查询返回超过 1 个值。当子查询
跟在 =, !=, , >= 之后或当子查询用作表达式时,这是不允许的。
【问题讨论】:
-
这一行
SET @Emp_Age = (SELECT DATEDIFF(YY,[BirthDate],GETDATE()) FROM HumanResources.Employee)- 错误是因为表中有多个记录,而您没有指定要哪一个。
标签: sql sql-server tsql date stored-procedures