我在我的應用程序中有一個用逗號分隔列表作爲參數的用戶定義函數。它分割項目並將它們插入表變量並返回結果。表變量行限制?
該函數運行良好,除了當逗號分隔列表中的項目超過1000時,它忽略了其餘部分。也就是說,如果我插入1239,前1000行將被返回,其餘的239被完全忽略。發生這種情況時沒有錯誤。
我不禁感到這是由於某種我應該知道的限制,但我似乎無法找到任何有關它的信息。它是可以存儲在表變量中的行數的限制嗎?或者我在實際的代碼本身中缺少一些東西?任何人都可以協助在這裏眯起眼睛。
ALTER FUNCTION [dbo].[ufnConvertArrayToIntTable] (@IntArray VARCHAR(8000))
RETURNS @retIntTable TABLE
(
ID int
)
AS
BEGIN
DECLARE @Delimiter char(1)
SET @Delimiter = ','
DECLARE @Item varchar(8)
IF CHARINDEX(@Delimiter,@IntArray,0) <> 0
BEGIN
WHILE CHARINDEX(@Delimiter,@IntArray,0) <> 0
BEGIN
SELECT
@Item = RTRIM(LTRIM(SUBSTRING(@IntArray,1,CHARINDEX(@Delimiter,@IntArray,0)-1))),
@IntArray = RTRIM(LTRIM(SUBSTRING(@IntArray,CHARINDEX(@Delimiter,@IntArray,0)+1,LEN(@IntArray))))
IF LEN(@Item) > 0
INSERT INTO @retIntTable SELECT @Item
END
IF LEN(@IntArray) > 0
INSERT INTO @retIntTable SELECT @IntArray
END
ELSE
BEGIN
IF LEN(@IntArray) > 0
INSERT INTO @retIntTable SELECT @IntArray
END
RETURN
END;
中邦謝謝哥們我不能相信我沒有看到,我將varchar變量增加到MAX,它的工作每個項目的7個字符的長度總是一樣的,它們之間用逗號隔開,這意味着字符串的長度總是被截斷爲1000條記錄,然而在附註中,限制是什麼nvarchar(max)? –
限制是它不能被索引。 –