一尘不染

在oracle 12c中以JSON形式返回SQL查询的结果

json

背景

我需要从Oracle提取几千行并将其转换为JSON,以便在SlickGrid中使用。目前,我正在获取PHP中的行,使用iconv将其从ISO转换为UTF-8,并使用json_encode导出到json。整个操作在数据库端大约需要1秒,而生成JSON则需要5秒。这是很长的路要走。

问题

我已经读到Oracle 12c支持JSON,但是我找不到我真正需要的东西。

有没有办法以json格式返回标准sql查询的结果?

据说我想发出与此类似的查询:

SELECT * from table AS JSON

并收到类似于以下内容的有效json:

[{"col1": "value1", "col2": 2}, {"col1": "valueOfRow2", "col2": 3}]

重要的是,我需要为我转义unicode序列,因为我在客户端使用ISO-8859-2字符集,而JSON必须在UTF-8中,或者已转义了序列。


阅读 790

收藏
2020-07-27

共1个答案

一尘不染

Oracle
12c版本12.1.0.2(截至2014年11月11日的最新版本)添加了JSON支持:https
://docs.oracle.com/database/121/NEWFT/chapter12102.htm#BGBGADCC

自10月17日起开始提供。https://blogs.oracle.com/db/entry/oracle_database_12c_release_1

如果您无法使用该版本进行修补/使用,则有一个由Lewis Cunningham和Jonas Krogsboell编写的出色软件包:PL / JSON * http://pljson.sourceforge.net/

这是一个极好的软件包(我已经在许多数据库安装中使用过它)。

包含的示例很好,涵盖了大多数情况。

declare 
  ret json;
begin
  ret := json_dyn.executeObject('select * from tab');
  ret.print;
end;
/
2020-07-27