不能调用表上的方法?表变量
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 函数 - 在选定工作表上的选定列中查找