在SQL用户定义函数中使用公用表表达式时出错

Mar*_*s K 5 sql sql-server sql-function

CREATE FUNCTION [dbo].[udfGetNextEntityID]
()
RETURNS INT
AS
BEGIN
    ;WITH allIDs AS
    (
    SELECT entity_id FROM Entity 
    UNION SELECT entity_id FROM Reserved_Entity
    )       
  RETURN (SELECT (MAX(entity_id) FROM allIDs )

END
GO
Run Code Online (Sandbox Code Playgroud)

SQL不是我的强项,但我无法弄清楚我在这里做错了什么.我希望函数从2个表的并集中返回最大的entity_id.运行脚本会出错:

 Incorrect syntax near the keyword 'RETURN'.
Run Code Online (Sandbox Code Playgroud)

我查看在功能中使用CTE是否有一些限制,但找不到任何相关的东西.我该如何纠正?

Ale*_*nov 7

CREATE FUNCTION [dbo].[udfGetNextEntityID]()
RETURNS INT
AS
BEGIN
  DECLARE @result INT;

  WITH allIDs AS
  (
    SELECT entity_id FROM Entity 
    UNION SELECT entity_id FROM Reserved_Entity
  )       
  SELECT @result = MAX(entity_id) FROM allIDs;

  RETURN @result;

END
GO
Run Code Online (Sandbox Code Playgroud)