SQL错误:字符串或二进制数据将被截断

时间:2010-06-08 21:32:42

标签: sql function sql-update table-variable

我得到了一个表变量@RQ,我希望它使用表值函数进行更新。 现在,我认为我的更新错误,因为我的功能正常...

功能:

ALTER FUNCTION [dbo].[usf_GetRecursiveFoobar]
(   
    @para int,
    @para datetime,
    @para varchar(30)
)


RETURNS @ReQ TABLE
(
    Onekey int,
    Studnr nvarchar(10),
    Stud int,
    Description nvarchar(32),
    ECTSGot decimal(5,2),
    SBUGot decimal(5,0),
    ECTSmax decimal(5,2),
    SBUmax decimal(5,0),
    IsFree bit,
    IsGot int,
    DateGot nvarchar(10),
    lvl int,
    path varchar(max)
)

AS
BEGIN;

WITH RQ
AS
(
    --RECURSIVE QUERY
)

INSERT @ReQ

SELECT
    RQ.Onekey,
    RQ.Studnr,
    RQ.Stud,
    RQ.Description,
    RQ.ECTSGot,
    RQ.SBUGot,
    RQ.ECTSmax,
    RQ.SBUmax,
    RQ.IsFree,
    RQ.IsGot,
    RQ.DatumGot,
    RQ.lvl,
    RQ.path

    FROM
        RQ

    RETURN

END

现在,当我运行一个简单的查询时:

DECLARE @ReQ TABLE
(
     OnderwijsEenheid_key int,
     StudentnummerHSA nvarchar(10),
     Student_key int,
     Omschrijving nvarchar(32),
     ECTSbehaald decimal(5,2),
     SBUbehaald decimal(5,0),
     ECTSmax decimal(5,2),
     SBUmax decimal(5,0),
     IsVrijstelling bit,
     IsBehaald int,
     DatumBehaald nvarchar(10),
     lvl int,
     path varchar(max)
)

INSERT INTO @ReQ

SELECT *
FROM usf_GetRecursiveFoobar(@para1, @para2, @para3)

我收到了错误:

  

Msg 8152,Level 16,State 13,Line 20   字符串或二进制数据将被截断。   声明已经终止。

为什么呢?该怎么办?

1 个答案:

答案 0 :(得分:3)

确定。我的错......

尝试用一个10字符长的字符串填充varchar(10)。所以它失败了......