2

我有一个表变量@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)

我收到错误:

消息 8152,级别 16,状态 13,行 20 字符串或二进制数据将被截断。该语句已终止。

为什么?该怎么办?

4

1 回答 1

3

行。我的错...

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

于 2010-06-09T10:44:40.313 回答