2012-08-13 48 views
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 

我得到一个错误的临时表:CTE与功能

Incorrect syntax near the keyword 'with' . If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

任何一个可以解决这个问题?

+4

您有预先设置'WITH'语句',' – 2012-08-13 11:46:34

+3

它会告诉你如何解决错误消息的问题... – Bridge 2012-08-13 11:53:37

回答

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 
... 

一致性和清晰度,它不会伤害到终止与分号的所有语句。

1

加上分号bofore WITH

;with Hierachy (CustomSpaceId) AS 
(.............