2

パラメータの1つにvarchar(50)として1 + FEU0 + 1663と入力している場合、次のメッセージが表示されます。

    String or binary data would be truncated.

別の値を入力すると、正常に機能します。問題が発生しないように、1 + FEU0+1663に入力する方法はありますか。問題は、SQLが+記号のためにそれをより多くの数にしようとしていることだと思います。

これは私が実行するために使用しているものです

    exec usp_Insert_Lst   'E3441-NI0dd4-12', 
                              null, -- fname
                              null, -- lanme
                              null,  -- mi
                              null,  -- email
                              '1+FEU0+1663' -- PHID
4

1 に答える 1

0

あなたがあなたの質問に与えた詳細だけを使ってあなたの事件を再現することはできません。

CREATE PROC usp_Insert_Lst(
    @p1 varchar(50)
    ,@p2 varchar(50)
    ,@p3 varchar(50)
    ,@p4 varchar(50)
    ,@p5 varchar(50)
    ,@p6 varchar(50)
)
AS
SELECT @p1, @p2, @p3, @p4, @p5, @p6
GO

exec usp_Insert_Lst   'E3441-NI0dd4-12', 
    null, -- fname
    null, -- lanme
    null,  -- mi
    null,  -- email
    '1+FEU0+1663' -- PHID
GO

--Result
--------------- ---- ---- ---- ---- ------------
E3441-NI0dd4-12 NULL NULL NULL NULL 1+FEU0+1663

プロシージャ(usp_Insert_Lst)に次のようなものがあると仮定します。

INSERT your_table (param1, fname, lanme, mi, email, PHID)
SELECT @p1, @p2, @p3, @p4, @p5, @p6

この挿入が次を返す場合:'文字列またはバイナリデータは切り捨てられます。'

その場合、your_table.fnameまたはyour_table.PHIDのサイズがそれぞれLEN('E3441-NI0dd4-12')および/またはLEN(1 + FEU0 + 1663)未満であることを意味するだけです。


あなたのコメントに基づいて:私はvarchar(50)としてフィールドを持っています

ストアドプロシージャに@param1varchar(50)とyour_table.field1 varchar(50)がある場合、文字列またはバイナリメッセージを表示するエラーは、プロシージャの開始とyour_tableへの挿入の間にある可能性があります。

CREATE PROC usp_Insert_Lst(
    @p1 varchar(50)
...
)
AS
...
...  <-- error to be found here
...
INSERT your_table (param1,...)
SELECT @p1,...
于 2012-05-04T21:29:56.547 に答える