当前位置: 首页 > 面试题库 >

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

易祯
2023-03-14
问题内容

背景

我需要从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中,或者已转义了序列。


问题答案:

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;
/


 类似资料:
  • 问题内容: 如果我有一个工作表,例如: 我想要一个查询,该查询将按日期对它们进行分组,并计算该日期的每个状态和总状态的发生率。 这给了我 我现在想将其压缩为每个唯一日期的一行,并为每个日期安排某种多列布局。一个约束是5个可能的单词中的任何一个,但每个日期可能没有每个状态之一。另外,我希望每天总计所有状态。因此,所需的结果将如下所示: 列可以通过类似的方式动态构建 对于不包含任何此类状态的日期,结果

  • 我有下面的SQL查询,我在flink工作中使用。< code>mysql_table是使用JDBC连接器创建的,而< code>kafa_source表是从传入的kafka流创建的。 我在两者之间执行时态连接,当我在Flink的sql-client CLI中检查时,运行良好(用< code>flink-faker测试)。内部查询工作得非常好,并且正在打印结果。有人能帮助我找出这个问题吗? 编辑:我

  • 本文向大家介绍Python Sqlite3以字典形式返回查询结果的实现方法,包括了Python Sqlite3以字典形式返回查询结果的实现方法的使用技巧和注意事项,需要的朋友参考一下 sqlite3本身并没有像pymysql一样原生提供字典形式的游标。 但官方文档里已经有预留了相应的实现方案。 使用这个函数代替conn.raw_factory属性即可。 官方文档链接 以上就是小编为大家带来的Pyt

  • 我有以下表格结构: 1-课程(course_id、course_nam、语言、course_price、create_date、average_rating、course_description、certifica_price、course_creator_id) 2-学生(学生证、钱包) 3-折扣(折扣id、折扣课程id、允许的许可课程id、开始日期、结束日期、百分比) 4-报名(student

  • 问题内容: 我要找的东西对我来说似乎很简单,但是我的Google失败了。 我想要一个允许我运行任何查询并以json格式获取结果的方法。 诀窍是我 不 希望结果需要Java对象作为过程的一部分(DTO,VO等)。 有任何快速/简便/清洁的方法吗? 问题答案: 杰克逊有一些不错的方法。此答案中有一些示例可以为您带来奇迹。 另外,如果杰克逊不提供给你,你可以看看这个

  • 问题内容: 我有以下收藏 我要收集所有其 在主阵列 我已经试过了 但这给了我这样的输出 我想要这样的输出 问题答案: 你可以。与mongoose一起使用,因为它返回一个数组,与使用相比,简单使用更好 或使用核心驱动程序中的基础: 如果您不希望获得“与众不同”的结果,则与之大致相同: 或与 您还可以使用,基本上可以改变聚合过程和“幕后”(“仅返回字段部分”,而不是独特的聚合方法): MongoDB本