回答

收藏

表变量行有限制吗?

技术问答 技术问答 177 人阅读 | 0 人回复 | 2023-09-12

我的应用程序中有一个用户定义的函数,以逗号分隔列表为参数。它拆分项目,插入表变量并返回结果。6 {( ?$ Q8 p  q# k# V8 Z" g8 O
该功能运行良好,但当逗号分隔列表中的项目超过1000时,其余部分将被忽略。换句话说,如果我插入1239,我将返回前1000行,而其余的239将被完全忽略。这种情况没有错。
6 Y6 E( B! q  [% p0 Z$ e  e4 S我忍不住觉得这是因为我应该知道一些限制,但我似乎找不到任何关于它的信息。这是对可以存储在表变量中的行数的限制吗?还是我在实际代码本身中缺少了什么?有人能帮忙吗?眼睛就在这里。
* f* v; h+ c3 f" H8 R+ n, _ALTER FUNCTION [dbo].[ufnConvertArrayToIntTable] (@IntArray VARCHAR(8000))RETURNS @retIntTable TABLE(    ID int)ASBEGINDECLARE @Delimiter char(1)SET @Delimiter = ','DECLARE @Item varchar(8)IF CHARINDEX(@Delimiter,@IntArray,0)  0    BEGIN       WHILE CHARINDEX(@Delimiter,@IntArray,0)         BEGIN        SELECT            @Item = RTRIM(LTRIM(SUBSTRING(@IntArray,1,CHARINDEX(@Delimiter,@IntArray,0)-),             @IntArray = RTRIM(LTRIM(SUBSTRING(@IntArray,CHARINDEX(@Delimiter,@IntArray,0) 1,LEN(@IntArray))))            IF LEN(@Item) >              INSERT INTO @retIntTable SELECT @Item        END        IF LEN(@IntArray) > 0            INSERT INTO @retIntTable SELECT @IntArray    ENDELSE    BEGIN    IF LEN(@IntArray) >        INSERT INTO @retIntTable SELECT @IntArray    END    RETURN  END;               
! E6 K8 H) ]  X6 g- }    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则