【发布时间】:2023-03-19 09:50:01
【问题描述】:
逻辑一:
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。
【问题讨论】:
-
char(n)类型的 rpgle 变量如果超过 32766,则不能被 SQL 使用,请参阅here。也许您可以使用GET_DBCLOB_FROM_FILE 加载数据,然后使用LOB LOCATOR 来操作它。或者直接使用DB_CLOB file reference -
是否可以将char转为graph,并将转换后的图形值移动到DBCLOB列字段中?
-
是的,你可以先
dcl-s xxx ucs2(16383) ccsid(1200)然后xxx = WkoutJSON,但如果你使用GRAPH或UCS2变量,那么它被限制为16383 个字符(32766 字节)作为主变量。当然你可以循环你的原始数据和VALUES :lob_locator = :lob_locator concat :xxx,完成后insert ... :llob_locator
标签: db2 ibm-midrange rpgle