2010-06-08 84 views
2

我得到一个表变量@RQ,我希望它使用表值函数更新。 现在,我觉得我做的更新错误的,因为我的函数的工作...SQL错误:字符串或二进制数据将被截断

功能:

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 String or binary data would be truncated. The statement has been terminated.

为什么?该怎么办?

回答

3

好的。我的错...

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

相关问题