0

我正在针对来自 teiid 的 MySQL 数据源发出 SQL SELECT 查询,并尝试获取 JSON 格式的 SQL 响应。我能够以 XML 格式获得响应,但在尝试以 JSON 格式获取响应时遇到了麻烦。似乎没有与 XMLELEMENT、XMLAGG、XMLFOREST XML 函数等效的 JSON 函数。我在下面发布了我的查询的 XML 版本。此查询的等效 JSON 版本是什么。

创建虚拟程序 GetFlightRecordsByAirDelay1(IN p1 integer, IN p2 integer) RETURNS (xml_out xml) OPTIONS (UPDATECOUNT 0, "REST:METHOD" 'GET', "REST:URI" 'GetFlightRecordsByAirDelay1') AS /*+ cache(pref_mem ttl: 14400000) */ BEGIN SELECT XMLELEMENT("FlightDelayRecords",
XMLAGG(XMLELEMENT("FlightDelayRecord", XMLFOREST(UniqueCarrier,FlightNum, CRSDepTime, DepTime, CRSArrTime, ArrDelay) )) ) 作为 xml_out FROM (SELECT UniqueCarrier,FlightNum, CRSDepTime, DepTime, CRSArrTime,
ArrDelay FROM flight_records_mod1 WHERE flight_records_mod1.ArrDelay < p1 AND flight_records_mod1.YEAR = p2 LIMIT 10) A;
结尾

4

1 回答 1

0

返回 json 可以更简单。产生如下结果:

{"FlightDelayRecords":[{"UniqueCarrier":...},...]}

利用

CREATE VIRTUAL PROCEDURE GetFlightRecordsByAirDelay1(IN p1 integer, IN p2 integer) 
RETURNS (clob json) OPTIONS (UPDATECOUNT 0, "REST:METHOD" 'GET', "REST:URI" 'GetFlightRecordsByAirDelay1') AS /*+ cache(pref_mem ttl:14400000) */ 
BEGIN 
SELECT JSONOBJECT(JSONARRAY_AGG(JSONOBJECT(UniqueCarrier,FlightNum, CRSDepTime, DepTime, CRSArrTime, ArrDelay)) as "FlightDelayRecords") as json FROM (SELECT UniqueCarrier,FlightNum, CRSDepTime, DepTime, CRSArrTime,
ArrDelay FROM flight_records_mod1 WHERE flight_records_mod1.ArrDelay < p1 AND flight_records_mod1.YEAR = p2 LIMIT 10) A;
END
于 2017-11-21T21:29:01.237 回答