2013-02-26 49 views
1

該函數在我的朋友的Visual Studio和SQL Server 2021上工作,但不是我的。層次選擇在Visual Studio/SQL Server 2012中不起作用

它返回在WITH Result (ID)錯誤:

附近的 「結果」 不正確的語法,AW_CHANGE_TRACKING_CONTEXT期待,AW_ID,AW_XMLNAMESPACES,QUOTED_ID

任何解決方案..?

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE FUNCTION [dbo].[hierarchySelect] 
(
@CategoryID int 
) 
RETURNS @Result TABLE (ID int) AS BEGIN 


WITH Result (ID) 
AS 
(
    SELECT ID 
    FROM Categories 
    WHERE ID = @CategoryID 
    UNION ALL 
    SELECT C.ID FROM Categories C 
    INNER JOIN Result R ON C.parentID = R.ID 
) 
INSERT INTO @Result 
SELECT ID 
FROM Result 

RETURN 

END 
GO 
+0

您使用的是哪個版本的SQL Server?例如,SQL Server 2000不支持'with'語句。 – 2013-02-26 19:51:10

+0

其Microsoft SQL Server 2012 - 11.0.2100.60(X64) – 2013-02-26 20:38:28

回答

1

我想通了,應該不會導致結果但那是有線,因爲它我的朋友在SQL Server上的工作,我不知道怎麼辦。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
CREATE FUNCTION [dbo].[hierarchySelect] 
(
@CategoryID int 
) 
RETURNS @Result TABLE (ID int) AS BEGIN 


WITH Result (ID) 
AS 
(
SELECT ID 
FROM Categories 
WHERE ID = @CategoryID 
UNION ALL 
SELECT C.ID FROM Categories C 
INNER JOIN Results R ON C.parentID = R.ID 
) 
INSERT INTO @Result 
SELECT ID 
FROM Results 

RETURN 

END 
GO 
相關問題