我有一个RPGILE程序,它将带有XMLSERIALIZE的SQL返回到CHAR(32000)变量。 有时结果将超过32k。 最简单的方法是什么?如果我定义一个clob字段,然后使用它返回SQL结果,则程序不会编译。 我在QTEMP中使用Clob字段创建文件,然后将结果插入该文件中,然后将其写到IFS中,而不是在RPG中返回值。 但是XML文件最后似乎包含无效数据,并且不可用,有什么想法吗?
D ResultXML S 32000A varying
........
/FREE
exec sql declare :ResultXml variable;
exec sql declare :SQLMESSAGE VARIABLE;
exec sql
SELECT
XMLSERIALIZE (content
xmlelement (NAME "Document",
xmlnamespaces(
DEFAULT 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02'
),
...
AS clob(1m) ccsid 37 INCLUDING XMLDECLARATION
as response
INTO :ResultXML
FROM csp40 t
... 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);
答案 0 :(得分:2)
签出DB2 SQL Embedded Programming guide。
您可能希望将主机变量定义为SQL_TYPE,例如:
dcl-s ResultXML SQLTYPE(CLOB:32000);