我正在针对TEIID的mySQL数据源发出SQL选择查询,并尝试以JSON格式获得SQL响应。我能够以XML格式获得响应,但是当我试图以JSON格式获得响应时遇到麻烦。似乎没有等效的JSON函数与XMLELEMENT,XMLAGG,XMLFOREST XML函数。我发布了我的查询波纹管的XML版本。此查询的等效JSON版本是什么。
创建虚拟过程getflightrecordsbyairdelay1(在P1 Integer中,在 P2 Integer)返回(XML_OUT XML)选项(UpdateCount 0, "休息:方法"'get'," reth:uri"'getflightrecordsbyairdelay1') 作为 /* 缓存(pref_mem ttl:14400000) */ 开始 选择Xmlelement(" FlightDelayRecords",
xmlagg(xmlelement(" FlightElayRecord", XMLForest(Uniquecarrier,Flighnum,Crsteptime,Deptime,Deptime, crsarrtime,arrdelay))))为xml_out(选择Uniquecarrier,Flightnum,crsteptime,Deptime,crsarrtime,
flairs_records_mod1的arrdelay其中flairs_records_mod1.arrdelay< P1和Flight_Records_Mod1.year = P2限制10)A;
结束
返回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