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

Ok。私のせい...

varchar(10) に 10 文字の長い文字列を入力しようとしました。だから失敗した…

于 2010-06-09T10:44:40.313 に答える