【问题标题】:Inserting Char value to database column having DBCLOB 2g in DB2将 Char 值插入 DB2 中具有 DBCLOB 2g 的数据库列
【发布时间】: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,但如果你使用GRAPHUCS2 变量,那么它被限制为16383 个字符(32766 字节)作为主变量。当然你可以循环你的原始数据和VALUES :lob_locator = :lob_locator concat :xxx,完成后insert ... :llob_locator

标签: db2 ibm-midrange rpgle


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

获取 wkoutJSON 未声明或不可用

这两种方式都试图在sql中使用:wrkoutJSON,因为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));  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    相关资源
    最近更新 更多