2017-05-25 15 views
1

にエラーメッセージ切り捨てられるは、SQL Serverのストアドプロシージャ

EXEC [dbo].[IR_STK_VAL_FIFO] N'01-Jan-2012', N'25-May-2017', 0, '', 0, '', 0, '', 0, 0, '', N'S', N'05-Jul-2012', 0 

を私は持っていますこのテーブルの最後の行におおよそエラーが発生するストアドプロシージャ:

CREATE TABLE #PAE_TR_ROWS 
( 
    productId varchar(7), 
    docType varchar(3), 
    docId int, 
    docDate SMALLDATETIME, 
    qtyIn int, 
    qtyOut int, 
    rate decimal(12,4), 
    sortOrder varchar(255), 
    appRate decimal(12,4) 
) 

上記のタブに挿入E:

INSERT INTO #PAE_TR_ROWS (productId, docType, docId, docDate, qtyIn, qtyOut, rate, sortOrder, appRate) 
VALUES (@new_productId, @new_docType, @new_docId, @new_docDate, 0, @balanceQty, @new_rate, @new_sortOrder, @rate) 
+1

'01-Jan-2012'を' varchar(7) 'のみである' productId'に挿入しようとしています。 –

+0

'productId'、' docType'、 'sortOrder'のいずれかが文字制限を超えています。 –

答えて

4

エラー「の文字列またはバイナリデータが切り捨てられるには、」あなたがいずれかの列が受け入れることができるよりも大きなデータを挿入しようとしていることを意味します。

をEXECコマンドに渡した値がで、正しくない順序があるために発生しています。

たとえば、あなたが合格第一値はこの日付です:

EXEC [dbo].[IR_STK_VAL_FIFO] N'01-Jan-2012',N'25-May-2017',0... 
            ▲ 

そしてコマンドで、それがproductIdとして宣言されています:

       ▼ 
INSERT INTO #PAE_TR_ROWS(productId,... 
VALUES(@new_productId,... 
      ▲ 

しかし、その後、列productIdは、唯一のvarchar(7)です値01-Jan-2012がそのサイズを超えています。そのため、このエラーが発生しています。

関連する問題