这很奇怪。我有两个单独的存储过程插入一个表。
一个工作正常,而另一个截断除四个varchar(50)
列上的第一个字符以外的所有字符。我通过在SQL中执行SP来测试它。
唯一的区别是工作查询是将数据从一个表移动到另一个表。非工作存储过程正在接收参数。在非工作查询中,有int
列,它们可以正常工作。它只是四个varchar。
这很好用。
INSERT INTO PurchaseOrderItems_tbl (POID, VendorAccountID, POTicketID, POInvItemID, POLineItemQty, PartManufPartNum, PartOrderDesc, PartOrderManufacture, PartOrderModel, POType, PODescription, POStatusID, PartRequestedBy, POGLCode)
SELECT
POID, VendorAccountID, PartOrderTicketID, PartInvID,
POItemQty, PartManufPartNum, PartOrderDesc,
PartOrderManufacture, PartOrderModel, POType,
PODescription, POStatusID, PartRequestedBy, POGLCode
FROM
PurchaseOrderTmp_tbl
这是非工作存储过程:
Procedure [dba].[xxxxx]
(
@POID int,
@VendorAccountID int,
@PartOrderTicketID int,
@PartInvID int,
@PartManufPartNum varchar,
@PartOrderDesc varchar,
@PartOrderManufacture varchar,
@PartOrderModel varchar,
@PartOrderType varchar,
@PartOrderQTY int
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO PurchaseOrderItems_tbl
([POID],[VendorAccountID],[POInvItemID],[POTicketID],[PartManufPartNum],[PartOrderDesc],[PartOrderManufacture],[PartOrderModel],[POLineItemQty])
VALUES (@POID, @VendorAccountID, @PartInvID, @PartOrderTicketID, @PartManufPartNum, @PartOrderDesc, @PartOrderManufacture, @PartOrderModel, @PartOrderQTY)
END
我完全感到困惑,因为我没有看错,而且qry没有错误。
先谢谢人们
答案 0 :(得分:4)
您的存储过程未指定varchar输入的长度 - 默认情况下,此长度为1。
procedure [dba].[xxxxx]
(
@POID int,
@VendorAccountID int,
@PartOrderTicketID int,
@PartInvID int,
@PartManufPartNum varchar(50), -- match the column length
...etc