0

我正在使用 ESQL 从 Oracle 获取数据并创建 XML 消息。一切正常,除了列名 FILENAME 被自动修剪为 20 个字符。创建 XML 消息的 ESQL 的一部分:

CREATE COMPUTE MODULE FileExpectedEvent
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        DECLARE now CHARACTER;
        SET now = CAST(CURRENT_DATE AS CHARACTER FORMAT 'yyyy-MM-dd');

        CALL CopyMessageHeaders();      
        DECLARE DB_Schema NAME BAM_DB_Schema;
        SET Environment.Variables.ExpectedFiles.Rec[]
                = (SELECT TRIM(A.FILENAME) AS FILENAME, A.EXPECTED_DATE, A.EXPECTED_TIME, A.EXPECTED_ALERT_SENT, A.ARRIVED_DATE, A.ARRIVED_TIME
                   FROM Database.DB_Schema.BAM_EXPECTED_FILES AS A 
                   WHERE A.EXPECTED_DATE = now 
                   AND (A.EXPECTED_ALERT_SENT IS NULL OR A.EXPECTED_ALERT_SENT <> 'Y'));


        DECLARE  ResultRef REFERENCE TO Environment.Variables.ExpectedFiles.Rec[1];
        DECLARE expectedTimeStamp TIMESTAMP;


        DECLARE ns1 NAMESPACE 'http:///XYZ.xsd'; 

        WHILE LASTMOVE(ResultRef) = TRUE DO 
           SET OutputRoot.MQMD.Version = 2;
           SET OutputRoot.MQMD.Format = 'MQSTR   '; 
           SET OutputRoot.XMLNSC.ns1:ExpectedFile.(XML.NamespaceDecl)xmlns = 'http:///XYX.xsd';                                      
           SET OutputRoot.XMLNSC.ns1:ExpectedFile.ns1:FileName = ResultRef.FILENAME;

这是生成的示例 XML

<NS1:ExpectedFile> 
 <NS1:FileName> OH_ODJFS_DAILY_83420</NS1:FileName> 
 <NS1:ExpectedDate> 2014-09-25</NS1:ExpectedDate> 
 <NS1:ExpectedTime> 07:00:00</NS1:ExpectedTime> 
 <NS1:ExpectedAlertTime> 2014-09-25T13:00:00-05:00</NS1:ExpectedAlertTime> 
 <NS1:ExpectedDateTimeStamp> 2014-09-25T12:00:00-05:00</NS1:ExpectedDateTimeStamp> 
 </NS1:ExpectedFile>

一切都按预期进行,但<NS1:FileName> OH_ODJFS_DAILY_83420</NS1:FileName>自动限制为长度 20。删除 20 以上的文件名。[这适用于 DB2]

在这方面需要帮助...在此先感谢

4

0 回答 0