Ibm midrange 将CLOB数据写入SQL RPGILE中的IFS文件
我有一个RPGILE程序,它将带有XMLSERIALIZE的SQL返回到CHAR(32000)变量。 有时结果将超过32k大小。 最简单的方法是什么?如果我定义一个clob字段,然后使用它返回SQL结果,那么程序不会编译。 我在QTEMP中创建了一个带有clob字段的文件,然后将结果插入该文件,然后将其写入IFS,而不是在RPG中返回值。 但是XML文件的结尾似乎有无效数据,而且无法使用,你有什么想法吗 XML处理 文件写入 看看这本书 您可能希望将主机变量定义为SQL类型,如:Ibm midrange 将CLOB数据写入SQL RPGILE中的IFS文件,ibm-midrange,rpgle,Ibm Midrange,Rpgle,我有一个RPGILE程序,它将带有XMLSERIALIZE的SQL返回到CHAR(32000)变量。 有时结果将超过32k大小。 最简单的方法是什么?如果我定义一个clob字段,然后使用它返回SQL结果,那么程序不会编译。 我在QTEMP中创建了一个带有clob字段的文件,然后将结果插入该文件,然后将其写入IFS,而不是在RPG中返回值。 但是XML文件的结尾似乎有无效数据,而且无法使用,你有什么想法吗 XML处理 文件写入 看看这本书 您可能希望将主机变量定义为SQL类型,如: dcl-s R
dcl-s ResultXML SQLTYPE(CLOB:32000);
提供最少的代码,可以帮助您了解问题所在。谢谢,问题是当数据超过32k大小时…我建议您查看以下链接:谢谢,它可以工作,但是当我从IFS(通过电子邮件)检索我的文件时,它最后有一些空值。知道如何删除它们吗?当我将CLOB文件写入IFS时,它是以我在SQL类型中指定的大小创建的(例如10m),即使我有小数据,是否有办法使CLOB文件更小,即实际写入的数据的大小?变量包含CLOB中数据的长度。你能用它来决定要写多少数据吗?
... then we write it to the IFS
EVAL fd = open(%trimr(resp_file): 74 :511);
if fd=-1;
eval RC = perror(resp_file);
return;
endif;
EVAL rc = write(fd:%addr(ResultXML)+2:%len(ResultXML));
EVAL rc = close(fd);
dcl-s ResultXML SQLTYPE(CLOB:32000);