不能调用表上的方法?表变量

Posted

技术标签:

【中文标题】不能调用表上的方法?表变量【英文标题】:Cannot call methods on table ? Table Variable 【发布时间】:2013-11-19 08:23:29 【问题描述】:

我正在尝试将外部应用放在表变量上,但出现如下错误

无法调用表上的方法。

我有拆分功能,可以将字符串拆分成一定的长度

CREATE FUNCTION Split(@String varchar(MAX), @SplitLength int) 
RETURNS @Result TABLE (Splited varchar(MAX))
AS
BEGIN

Declare @Cnt int
    Set @Cnt = FLOOR((len(@String)/@SplitLength));

   While @Cnt!=0
    Begin
     SET @Cnt=@Cnt-1;
        While len(@String)>@SplitLength 
        Begin

         INSERT INTO @Result  VALUES (SUBSTRING(@String,1,@SplitLength))

         SET @String=SUBSTRING(@String,@SplitLength+1,len(@String)-@SplitLength) 

        End     

    End

RETURN
END

我加入了包含要拆分字符串的列的表变量

    DECLARE @LeftSuper TABLE
(
KeyTerm VARCHAR(MAX),
Data VARCHAR(MAX) ,

)

查询如下生成错误(无法调用表上的方法)

 select KeyTerm ,D.Splited from @LeftSuper
 outer apply [Split](@LeftSuper.Data,300) as D

注意:代码与 db 中的 Real Table 一起工作正常。

【问题讨论】:

【参考方案1】:

为表变量引入一个别名并在表达式中使用它:

select KeyTerm ,D.Splited from @LeftSuper ls
 outer apply [Split](ls.Data,300) as D

这实际上相当常见 - 因为表可能在查询中出现多次,每次在查询中遇到 @LeftSuper 时,它都被视为对表的 引用 - 不是作为已添加的引用 - 别名允许您引用。

【讨论】:

以上是关于不能调用表上的方法?表变量的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel 调用 VBA 函数 - 在选定工作表上的选定列中查找

仅更改活动工作表上的值

Azure,中间表上的聚集索引和性能影响

更新表上的触发器[关闭]

必须在大表上的 .Skip() 和 .Take() 之前在实体框架 4.1 中调用 .ToList()

大表上的第一次查询调用速度非常慢