将Char值插入DB2中具有DBCLOB 2g的数据库列

问题描述

逻辑1:

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。

解决方法

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));  

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...