2012-12-23 45 views
1

请解释我的错误,需要创建一个表值函数。在SQL Server中创建db函数

CREATE FUNCTION [dbo].[RetrieveEntityParent] (@FK_EntityId int (max)) 

    with p as 
    (SELECT  EntityId, FK_ParentId , EntityName ,EntityArabicName 
    FROM   OrgEntity 
    WHERE OrgEntity.EntityId=14 

    UNION ALL  
    SELECT  PA.EntityId, PA.FK_ParentId, PA.EntityName,PA.EntityArabicName 
    FROM   OrgEntity as PA 
    inner join p 
    ON p.FK_ParentId = PA.EntityId) 


    SELECT * from p 
+0

当您尝试执行已抛出什么样的错误? –

+0

@JW。 Msg 156,Level 15,State 1,Procedure RetrieveEntityParent,Line 3 关键字'with'附近的语法不正确。 消息319,级别15,状态1,过程RetrieveEntityParent,行3 关键字'with'附近的语法不正确。如果此语句是公用表表达式,xmlnamespaces子句或更改跟踪上下文子句,则前面的语句必须以分号结尾。 –

回答

0

的语法为inline table valued function是:

CREATE FUNCTION [dbo].[RetrieveEntityParent] (@FK_EntityId int (max)) 
RETURNS TABLE 
AS RETURN 
    ... your query here ... 
+0

运行时错误 消息2716,级别16,状态1,过程RetrieveEntityParent,行1 列,参数或变量#1:无法指定数据类型为int的列宽。 –

+0

我已经改变了类型为varchar,它的工作,需要解释,如果你可以。 (@FK_EntityId varchar(max)) –

+0

对,'int(max)'不存在!使用'int'代替。 – Andomar