TSToXML 函数

TSToXML 函数返回时间系列的 XML 表示法。

语法

TSToXML(doctype    lvarchar,
        id         lvarchar,
        ts         timeseries,
        output_max integer default 0)
returns lvarchar;

TSToXML(doctype    lvarchar,
        id         lvarchar,
        ts         timeseries)
returns lvarchar;
doctype
最顶部 XML 元素的名称。
id
时间系列表中用于唯一标识时间系列的主键值。
ts
TimeSeries 子类型的名称。
output_max
XML 输出的最大大小(以字节为单位)。如果不指定此参数,缺省值为 32 768。下表描述了 output_max 参数每个可能值的结果。
结果
无值 32 768 字节
负整数 232-1 字节
1 到 4096 4096 字节
4096 到 232-1 指定的字节数

描述

使用 TSToXML 函数可为少量数据提供 XML 格式的标准信息交换表示法。

XML 输出中的顶级标记是 TSToXML 函数的第一个参数。

id 标记必须唯一标识时间系列并在 XML 输出中引用它所基于的行。

AllData 标记指示返回了所有数据还是因超过 output_max 参数设置的大小而截断了数据。

其余的 XML 标记表示 TimeSeries 子类型及其列,包括时间戳记。

特殊字符 <、>、&、' 和 " 将替换为其预定义的 XML 实体。

返回结果

指定的 XML 格式时间系列,具体取决于 output_max 参数设置的大小。AllData 标记指示返回了所有数据 (1) 还是截断了数据 (0)。

示例

以下查询使用 Clip 函数从 TimeSeries 子类型 actual 中选择一个小时的时间系列数据,以 XML 格式返回:

SELECT TSToXML('meterdata', esi_id,
       Clip(actual, '2010-09-08 12:00:00'::datetime year to second,
                    '2010-09-08 13:00:00'::datetime year to second ) )
FROM ts_data
WHERE esi_id = '2250561334';

会返回以下 XML 数据:

<meterdata>
  <id>2250561334</id>
  <AllData>1</AllData>
  <meter_data>
    <tstamp>2010-09-08 12:15:00.00000</tstamp>
    <value>0.9170000000</value>
  </meter_data>
  <meter_data>
    <tstamp>2010-09-08 12:15:00.00000</tstamp>
    <value>0.4610000000</value>
  </meter_data>
  <meter_data>
    <tstamp>2010-09-08 12:15:00.00000</tstamp>
    <value>4.1570000000</value>
  </meter_data>
  <meter_data>
    <tstamp>2010-09-08 12:15:00.00000</tstamp>
    <value>6.3280000000</value>
  </meter_data>
  <meter_data>
    <tstamp>2010-09-08 12:15:00.00000</tstamp>
    <value>2.6690000000</value>
  </meter_data>
</meterdata>

TimeSeries 子类型的名称为 meter_data,其列为 tstampvalue

AllData 标记中的值 1 指示在本示例中返回了所有数据。