首页 > 解决方案 > 将 Char 值插入 DB2 中具有 DBCLOB 2g 的数据库列

问题描述

逻辑一:

Dcl-s WkoutJSON           Char(16000000); 

此 wkoutJSON 字段包含构建的 JSON 值

然后我试图插入数据库

Insert into TBLPOST(TBLPAYLD)
  Values(
    Method 1 // cast(:wkoutJSON as dbclob(2g) ccsid 1200)
    Method 2 // DBCLOB(:wkoutJSON, 1073741823, CODEUNITS32));

我尝试了两种方式。两者都没有工作得到 wkoutJSON 未声明或不可用

逻辑2:

Dcl-s WkoutJSON           Char(16000000); 
Dcl-s DbClobVar           SQLTYPE(DBCLOB:8386550); 

此 wkoutJSON 字段包含构建的 JSON 值

DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len  = %Len(DbClobVar_Data);  

然后我试图插入数据库

Insert into TBLPOST(TBLPAYLD)
  Values(:DbClobvar);

无法正常获取 wkoutJSON 未声明或不可用

请帮我将 char 值插入到 dbclob。

标签: db2ibm-midrangerpgle

解决方案


Insert into TBLPOST(TBLPAYLD)
  Values(
    Method 1 // cast(:wkoutJSON as dbclob(2g) ccsid 1200)
    Method 2 // DBCLOB(:wkoutJSON, 1073741823, CODEUNITS32));

获取 wkoutJSON 未声明或不可用

这两种方式都尝试:wrkoutJSON在sql中使用,因为wrkoutJAOS对于嵌入式SQL来说太大了。但你也说:

逻辑2:

Dcl-s WkoutJSON           Char(16000000); 
Dcl-s DbClobVar           SQLTYPE(DBCLOB:8386550); 

此 wkoutJSON 字段包含构建的 JSON 值

DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len  = %Len(DbClobVar_Data);  

然后我试图插入数据库

Insert into TBLPOST(TBLPAYLD)
  Values(:DbClobvar);

无法正常获取 wkoutJSON 未声明或不可用

这令人费解,因为您没有在 SQL 中使用 wrkoutJSON,而这实际上几乎就是您想要的方式。但是,DbClobvar_DATA 不是 varchar,因此在加载数据之前修剪数据将无济于事。你真的需要:

DbClobVar_Data = %Graph(wkoutJSON);
DbClobvar_Len  = %Len(%trim(DbClobVar_Data));  

推荐阅读