我试图从SAP数据中更新SQL数据(插入也是如此)。我总是收到运行时错误
SQL错误8114
例外情况的原因是:
数据库错误文本:“将数据类型nvarchar转换为数值错误。”
“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.

发布于 2022-10-31 11:05:48
该错误告诉您,存在一个nvarchar值,并试图将其隐式转换为数字类型。因此,错误发生在SET或WHERE子句中。因为在两个操作数中的WHERE子句中,一个是字段SKUId,它是一个varchar,而不是一个nvarchar或一个数值类型,因此很明显,错误发生在SET子句的某个地方。
在SET子句中,将值赋值给字段。在这些赋值中发生从nvarchar到数值的转换,当且仅当右边(,值)是nvarchar,左手侧(即字段)是数字的。
所以,为了解决你的问题,你需要
SET子句中接收某些值的SET子句中的所有数值字段的确切类型。
https://stackoverflow.com/questions/74261735
复制相似问题