我尝试从SAP数据更新SQL数据(插入时也会发生同样的情况)。我总是得到运行时错误
SQL错误8114
例外的原因是:
数据库错误文本:“将数据类型nvarchar转换为numeric时出错。”
'gs_sap_table2'的所有字段都是类型CHAR100。我尝试了很多方法,例如将结构中的一些字段从CHAR 100转换为十进制18,5,并使用值填充所有'NOT NULL' SQL字段,但问题仍然存在。
我把我的ABAP代码和SQL数据库字段的图片发给你:
EXEC SQL.
CONNECT TO :gv_connection
ENDEXEC.
EXEC SQL.
UPDATE STOCKKEEPINGUNITS
SET ProductId = :GS_SAP_TABLE2-PRODUCTID,
CreatedOn = :GS_SAP_TABLE2-CREATEDON,
UpdatedOn = :GS_SAP_TABLE2-UPDATEDON,
UPC = :GS_SAP_TABLE2-UPC,
AvailabilityType = :GS_SAP_TABLE2-AVAILABILITYTYPE,
Stock = :GS_SAP_TABLE2-STOCK,
Currency = :GS_SAP_TABLE2-CURRENCY,
TaxClass = :GS_SAP_TABLE2-TAXCLASS,
RetailCurrentPrice = :GS_SAP_TABLE2-RETAILCURRPRICE,
Weight = :GS_SAP_TABLE2-WEIGHT,
MeasurementUnitId = :GS_SAP_TABLE2-MEASUREMENTUID,
NameL1 = :GS_SAP_TABLE2-NAMEL1,
NameL2 = :GS_SAP_TABLE2-NAMEL2,
ShippingCost = :GS_SAP_TABLE2-SHIPPINGCOST
WHERE SKUId = :GS_SAP_TABLE2-SKUID
ENDEXEC.
EXEC SQL.
COMMIT
ENDEXEC.
EXEC SQL.
DISCONNECT :gv_connection
ENDEXEC.
1条答案
按热度按时间pprl5pva1#
该错误告诉您存在一个
nvarchar
值,并且正试图将其隐式转换为数值类型。因此,错误发生在SET
或WHERE
子句中。由于在WHERE
子句中,两个操作数中的一个是字段SKUId
,它是varchar
,而不是nvarchar
或数值类型,很明显错误发生在SET
子句中的某处。在
SET
子句中,您可以将值指派给字段。当且仅当右边(即值)为nvarchar
,而左边(即字段)为数值时,才会在这些指派中从nvarchar
转换为数值。因此,为了解决您的问题,您需要
SET
子句中接收某个值的所有数值字段