0
Create FUNCTION [dbo].[GetAllChildSpaces] 
(
    @CustomSpaceId varchar(40),
    @Userid int 
)
RETURNS NVARCHAR(MAX)
AS
BEGIN   
    DECLARE @Totalspace NVARCHAR(MAX)
    DECLARE  @tblTotalSpace table (CustomSpaceId NVARCHAR(40))

    WITH Hierachy (CustomSpaceId) AS 
     ( 
     SELECT  CustomSpaceId FROM  CV_CustomSpace e 
     UNION ALL 
     SELECT  e1.CustomSpaceId FROM  CV_CustomSpace e1 INNER JOIN Hierachy p  ON e1.ParentID = p.CustomSpaceId 
     ) 

  INSERT INTO @tblTotalSpace (CustomSpaceId)

  SET @Totalspace=( 
      SELECT STUFF((SELECT ',' + CAST(CustomSpaceId as varchar(50)) 
      FROM @tblTotalSpace FOR XML PATH('')) ,1,1,'') AS TotalSpaceID
  )

  DROP TABLE @tblTotalSpace

  return @Totalspace  
 END 

我收到一个错误:

关键字附近的语法不正确'with'。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前面的语句必须以分号结束。

任何人都可以解决这个问题吗?

4

2 回答 2

1

用分号结束前面的语句

Create FUNCTION [dbo].[GetAllChildSpaces] ( @CustomSpaceId varchar(40), @Userid int ) RETURNS NVARCHAR(MAX) AS BEGIN
DECLARE @Totalspace NVARCHAR(MAX) 
DECLARE @tblTotalSpace table (CustomSpaceId NVARCHAR(40)); -- Here

WITH Hierachy (CustomSpaceId) AS 
...

为了一致性和清晰性,用分号结束所有语句并没有什么坏处。

于 2012-08-13T11:46:48.117 回答
1

在 WITH 前放一个分号

;with  Hierachy (CustomSpaceId) AS 
 ( .............
于 2012-08-13T11:47:11.773 回答