2012-05-04 30 views
2

パラメータの1つで、1 + FEU0 + 1663をvarchar(50)と入力するストアドプロシージャがあります。 次のメッセージが表示されます。SQLストアドプロシージャ - 文字列またはバイナリデータが切り捨てられる

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 
+1

実行する方法とストアドプロシージャコードを投稿できますか? – Taryn

+1

これを '' 'の間に置いたのですか?...これは' '1 + FEU0 + 1663''ですか? – Lamak

+0

あなたのspのコードとあなたが挿入しているテーブルの定義を表示する必要があります – Lamak

答えて

0

を実行するために使用していますものです。この挿入戻った場合

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

:あなたと仮定すると

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)にこのような何かを持っている '文字列またはバイナリデータが切り捨てられます。'

これは、your_table.fnameまたはyour_table.PHIDがLEN( 'E3441-NI0dd4-12')および/またはLEN(1 + FEU0 + 1663)のサイズより小さいことを意味します。あなたのコメントに基づいて


:私はVARCHAR(50)としてフィールドを持っている

ストアドプロシージャは、PARAM1のVARCHAR(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,... 
+0

カルロス、私はvarchar(50)としてフィールドを持っているので、なぜそれが文句を言うでしょう –

+0

ネイト、私の最新の編集を確認してください。あまりにも長い場合は、おそらくそれを読むことはありませんが、それは完全なプロシージャのコードを表示することができます:) –

関連する問題