2 sql sql-server sql-server-2008
如何使用 SQL 中的用户定义函数返回记录数?下面是我写的函数,但失败了。
CREATE FUNCTION dbo.f_GetRecordCount
(@year INT)
RETURNS INT
AS
BEGIN
RETURN
SELECT COUNT(*)
FROM dbo.employee
WHERE year = @year
END
Run Code Online (Sandbox Code Playgroud)
也许 SELECT 查询返回 TABLE 但我需要返回 INT。
您正在返回一个表,它是包含计数的一行。
如果您需要返回该值,则需要从查询中获取该值。
CREATE FUNCTION dbo.f_GetRecordCount(@year INT)
RETURNS INT
AS
BEGIN
DECLARE @returnvalue INT;
SELECT @returnvalue = COUNT(*)
FROM dbo.employee
WHERE year = @year
RETURN(@returnvalue);
END
Run Code Online (Sandbox Code Playgroud)
不过,需要注意的是,您应该意识到这可能会对性能产生巨大的影响。如果您在选择列表或条件中使用 UDF,则会为结果集中的每一行调用它 - 它可能不会被优化。
例如,此查询不会只调用该函数一次,而是为每个员工调用一次:
SELECT Id, f_GetRecordCount(2001)
FROM employee
Run Code Online (Sandbox Code Playgroud)