在DB2中向具有DBCLOB 2g的数据库列插入Char值
逻辑1:在DB2中向具有DBCLOB 2g的数据库列插入Char值,db2,ibm-midrange,rpgle,Db2,Ibm Midrange,Rpgle,逻辑1: Dcl-s WkoutJSON Char(16000000); 此wkoutJSON字段包含内置JSON值 DbClobVar_Data = %Trim(%Graph(wkoutJSON)); DbClobvar_Len = %Len(DbClobVar_Data); DbClobVar_Data = %Trim(%Graph(wkoutJSON)); DbClobvar_Len = %Len(DbClobVar_Data); 然后我尝试插入到数
Dcl-s WkoutJSON Char(16000000);
此wkoutJSON字段包含内置JSON值
DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len = %Len(DbClobVar_Data);
DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len = %Len(DbClobVar_Data);
然后我尝试插入到数据库中
Insert into TBLPOST(TBLPAYLD)
Values(
Method 1 // cast(:wkoutJSON as dbclob(2g) ccsid 1200)
Method 2 // DBCLOB(:wkoutJSON, 1073741823, CODEUNITS32));
Insert into TBLPOST(TBLPAYLD)
Values(:DbClobvar);
Insert into TBLPOST(TBLPAYLD)
Values(:DbClobvar);
我试过两种方法。两者都不起作用,因为wkoutJSON未声明或不可用
逻辑2:
Dcl-s WkoutJSON Char(16000000);
Dcl-s DbClobVar SQLTYPE(DBCLOB:8386550);
Dcl-s WkoutJSON Char(16000000);
Dcl-s DbClobVar SQLTYPE(DBCLOB:8386550);
此wkoutJSON字段包含内置JSON值
DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len = %Len(DbClobVar_Data);
DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len = %Len(DbClobVar_Data);
然后我尝试插入到数据库中
Insert into TBLPOST(TBLPAYLD)
Values(
Method 1 // cast(:wkoutJSON as dbclob(2g) ccsid 1200)
Method 2 // DBCLOB(:wkoutJSON, 1073741823, CODEUNITS32));
Insert into TBLPOST(TBLPAYLD)
Values(:DbClobvar);
Insert into TBLPOST(TBLPAYLD)
Values(:DbClobvar);
无法获取wkoutJSON未声明或不可用
请帮助我将char值插入dbclob
获取wkoutJSON未声明或不可用
这两种方法都试图在sql中使用:wrkoutJSON
,因为wrkoutJAOS
对于嵌入式sql来说太大了。但你也说过:
逻辑2:
Dcl-s WkoutJSON Char(16000000);
Dcl-s DbClobVar SQLTYPE(DBCLOB:8386550);
Dcl-s WkoutJSON Char(16000000);
Dcl-s DbClobVar SQLTYPE(DBCLOB:8386550);
此wkoutJSON字段包含内置JSON值
DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len = %Len(DbClobVar_Data);
DbClobVar_Data = %Trim(%Graph(wkoutJSON));
DbClobvar_Len = %Len(DbClobVar_Data);
然后我尝试插入到数据库中
Insert into TBLPOST(TBLPAYLD)
Values(
Method 1 // cast(:wkoutJSON as dbclob(2g) ccsid 1200)
Method 2 // DBCLOB(:wkoutJSON, 1073741823, CODEUNITS32));
Insert into TBLPOST(TBLPAYLD)
Values(:DbClobvar);
Insert into TBLPOST(TBLPAYLD)
Values(:DbClobvar);
无法获取wkoutJSON未声明或不可用
这是令人费解的,因为您没有在SQL中使用wrkoutJSON,而这实际上几乎就是您想要的方式。但是,DbClobvar_数据不是varchar,因此在加载数据之前对其进行修剪不会有帮助。你真的需要:
DbClobVar_Data = %Graph(wkoutJSON);
DbClobvar_Len = %Len(%trim(DbClobVar_Data));
如果长度超过32766,则SQL不能使用类型为
char(n)
的rpgle变量,请参阅。也许您可以使用来加载数据,然后使用a来操作它。或者直接使用a是否可以将字符转换为图形,并将转换后的图形值移动到DBCLOB列字段?是的,您可以dcl-s xxx ucs2(16383)ccsid(1200)
然后xxx=WkoutJSON
,但是如果您使用图形或ucs2
变量,则它被限制为16383个字符(32766字节)作为宿主变量。确保可以循环使用原始数据和值:lob_locator=:lob_locator concat:xxx
完成后插入…:llob_定位器