错误消息:
消息 8152,级别 16,状态 14,过程 IR_STK_VAL_FIFO,第 74
行 字符串或二进制数据将被截断。
我正在运行并导致错误的查询:
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)
)
在上表中插入:
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)
错误"字符串或二进制数据将被截断"意味着您尝试插入的数据大于您的一列可以接受的数据。
发生这种情况是因为传递给 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
超过该大小。这就是您收到此错误的原因。