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

标签 json oracle oracle12c

背景

我需要从 Oracle 获取几千行并将它们转换为 JSON 以在 SlickGrid 中使用。 目前我正在获取 PHP 中的行,使用 iconv 将其从 ISO 转换为 UTF-8,并使用 json_encode 导出为 json。整个操作在 DB 端大约需要 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 或转义序列。

最佳答案

Oracle 12c 版本 12.1.0.2(截至 11.11.2014 的最新版本)添加了 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;
/

关于json - 在 oracle 12c 中以 JSON 形式返回 sql 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560996/

相关文章:

java - 如何在 JAVA 中解析此 JSON 响应

sql - 将 clob 转换为 varchar2

oracle - ORA-22813 : operand value exceeds system limits

甲骨文 SQL : Single Index with two Columns vs index on one Column

c# - JsonResult 返回空 Json

python - 在Python中动态循环json数据

ios - 将大量数据从核心数据导出到json

python - 基于 Oracle 查询将标题行写入 Excel

sql - 将数值转换为 VARCHAR2 会引发 ORA-03113

java - 哪个 ojdbc 版本支持带有 tomcat 6 的 oracle 12.1?