相关文章推荐
玉树临风的茶壶  ·  岛左近_百度百科·  1 年前    · 
纯真的冲锋衣  ·  Alexa Prize - Amazon ...·  1 年前    · 
魁梧的单车  ·  胆结石·  1 年前    · 
乖乖的牛腩  ·  Z4(BMW)の中古車 | ...·  1 年前    · 

最近项目在后端与数据库方面的交互中涉及到JSON,并且oracl12以上的版本支持JSON格式的数据存储和解析;本文章就先从简单入手,从入门学习ORACLE 12C中的JSON应用,后面再上传关于JSON在数据库方面的更深层次的应用,如存储过程等等方面的应用。

更深层次的应用请点击此处: pl/sql存储过程中json解析应用篇

一、oracle12.2.0.1版本增加的json-data功能特性:

1.对JSON Data的存储和管理

(1)数据表可以使用JSON 虚拟列来作表的键key

(2)可以创建JSON索引(with range,list, hash, or interval partitioning)

2.对JSON Data的查询

(1)JSON路径表达式增强功能:可以包含必须满足的过滤器表达式,通过匹配的数据和转换方法来改变它。

(2)解析成JSON后可以使用点符号访问JSON数组或对象中的元素

(3)增加JSON functions(方法):

json_value, json_query, json_object, json_array, json_table, json_objectagg, json_arrayagg

JSON condition(条件判断):

json_exists(返回boolean数据类型), is json, is not json, json_textcontains

3.还有对一些搜索索引的性能增强,视图中使用json数据等等

二、实用的使用案例(PL/SQL的json_value值支持返回boolean的数据类型):

在数据库中使用JSON的一般用法:

(1)在create table时,添加json字段column,并CHECK 该字段CONSTRAINT IS JSON数据(即是说明该字段列存是JSON数据,每次insert该字段列数据都会去CHECK一下是否 IS JSON),JSON字段类型可以是VARCHAR2,CLOB(字符大对象) or BLOB(二进制大对象),字节大小VARCHAR2<CLOB、BLOB,PS建议,使用varchar2(4000)大小不超4000字节可以提高性能(最大为32767字节),超过建议使用下一行存数据,若执着超过32767字节则使用CLOB、BLOB

CREATE TABLE c_json_t

(id VARCHAR2(35) NOT NULL PRIMARY KEY,

----定义json_data为JSON数据类型,(STRICT)为定义严格的JSON格式

json_data VARCHAR2(4000) CONSTRAINT ensure_jsondata CHECK (json_data IS JSON(STRICT)));

(2)将json数据insert到JSON字段colum中,可以进行多嵌套JSONObject和JSONArray格式的JSON数据

INSERT INTO c_json_t

VALUES(

SYS_GUID(),

"Name":"ZhangSan",

"Sex":null,

"SNO":"98565",

"Subject":{"kind":"arts","name":{"1":"Chinese","2":"English"}},

"grede":[{"name":"Chinese","sore":"65"},{"name":"English","sore":"56"}]

(3) Query查询JSON

1)可以使用条件:json_exists检查是否存在某个json值,

is json和is not json检查是否包含json数据;

2)可以使用方法:

json_value可以选取其他的json数据作为当前sql的某个字段的value值,json_query可以从其他的json数据查询一个或者多个values(通常是jsonObject或jsonArray)作为当前sql的某个json字段的json数据字符串,json_table可以将json数据作为一个虚拟表

----查询json_exists检查

select t1.json_data.Name from c_json_t t1 where json_data is json and json_exists(json_data,'$.Subject.name');

----查询json key中subkey对应的value值

select t1.json_data.Subject.name from c_json_t t1;

----查询json_value

SELECT * FROM c_json_t where id=json_value(json_data,'$.SNO');

----查询json_query

SELECT json_query(column,json_path RETURNING data_type array_wrapper error_hander ---ON ERROR) FROM table;

SELECT json_query(json_data,'$.Name' with WRAPPER ) FROM c_json_t

----json_table

SELECT jt.column_alias FROM table,json_table(column,'$' error_handler ON ERROR COLUMNS ("COLUMN_ALIAS" data_type FORMAT JSON array_wrapper PATH json_path

))AS "JT";

最近项目在后端与数据库方面的交互中涉及到JSON,并且oracl12以上的版本支持JSON格式的数据存储和解析;本文章就先从简单入手,从入门学习ORACLE 12C中的JSON应用,后面再上传关于JSON在数据库方面的更深层次的应用,如存储过程等等方面的应用。更深层次的应用请点击此处:pl/sql存储过程中json解析应用篇一、oracle12.2.0.1版本增加的json-data...
PL / SQL 基本知识 PL/ SQL ORACLE 支持的编程语言,就像 SQL Sever的T SQL ,我们可以通过它来实现更多更加灵活的功能。 特别的是,PL/ SQL 中有异常处理,即可以抛出异常以及相关说明,这将在下一篇博客中再做说明。 介绍PL/ SQL 基本语法及 使用 样例的系列BLOG主要由两篇,本篇将介绍PL/ SQL 的一些特性、变量赋值与数据类型的知识,下一篇再对PL/ SQL 的基本操作:游标、存储过程等进行说明。 数据库 新手,如有问题,欢迎交流~ PL — Procedural Language(过程性
第一步、下载开源的pl json 官方下载地址太慢,我已上传到本网站,下载地址:https://download.csdn.net/download/wang_chaodong/16500446 第二步、解压 unzip pl json .zip #可 使用 任意解压工具进行解压;本人 使用 os x终端 unzip 命令进行解压 第三步、 使用 sql plus/pl sql developer或其他工具导入 方法一: 使用 sql plus sql plus scott/tiger@orcl # 登...
Oracle Database 12c 第 2 版基于 12.1 SQL / JSON 特性构建,添加了许多用于操作 PL/ SQL 块中的 JSON 数据的内置对象类型(类似于面向对象语言中的类)。 在这篇文章中,我探索了一些通过 JSON _ARRAY_T 类型及其方法提供的面向数组的 JSON 特性。 就像类一样,对象类型提供了一个预定义的构造函数来实例化该类型的新实例、静态方法和成员方法。 以下是您最有可能 使用 的方法: 一般来说,关于在 PL/ SQL 使用 JSON 元素和 JSON 数组,有几点
Oracle 12c已经开始支持 JSON 数据的处理了,但是还没有一个XML转换为 JSON 的方法,所以特完成以下DEMO供大家参考,个中尚有不尽之处,欢迎评论指正。 XML数据 使用 程序包DBMS_XMLDOM进行处理。官方API地址:DBMS_XMLDOM JSON 数据采用CLOB类型存放,数据处理 使用 DBMS_LOB。官方API地址:DBMS_LOB 本例同样适用于 Oracle 11g版本。
最近有些项目在 数据库 oracle 使用 json 格式的数据交互,对于 oracle 12以上的版本都支持 JSON 格式数据的 使用 ,刚刚接触的猿们可以到上一篇 oracle 数据库 使用 json 简单 入门 ,最好参考官方的API文档关于 oracle 官方API文档对 JSON 的支持; 下面就比较详细的说一下,关于 oracle 数据库 在存储过程中的 JSON 解析 应用 : 一:先上一段存储过程解析 JSON 的存储过程,看你们能不...
### 回答1: Oracle 12c是一种强大的 数据库 管理系统,它可以让用户轻松地管理和维护 数据库 。然而,有时候会出现ORA-01017错误,提示“用户名/口令无效; 登录被拒绝”。 这个错误通常是由于登录信息(用户名和口令)无效导致的。这可能是因为输入的用户名或口令不正确,或者由于 数据库 管理员更改了登录凭据而导致登录失败。解决这个问题的方法是正确输入用户名和口令,或者联系 数据库 管理员以获取正确的凭据。 此外,还有一些其他可能导致ORA-01017错误的原因。例如, 数据库 可以配置为只允许连接来自某些IP地址或主机名的客户端。如果您没有在连接字符串中正确指定这些参数,则可能无法连接到 数据库 并出现此错误。解决办法是检查连接字符串并指定正确的参数。 总之,ORA-01017错误可能是由多种原因导致的,但通常可以通过检查登录凭据和连接字符串来解决问题。如果您无法解决问题,请联系 数据库 管理员以获取帮助。 ### 回答2: ORA-01017是 Oracle 数据库 发生登录错误时的错误代码,错误信息为用户名/口令无效,登录被拒绝。通常,这种错误是由以下情况引起的。 首先,可能是由于输入的用户名和密码不正确,导致登录失败。在此情况下,应该仔细检查输入的用户名和密码是否正确,对大小写敏感,确保输入正确。 其次,可能是 Oracle 数据库 中没有该用户的登录权限,或者没有分配合适的角色和权限。在这种情况下,应该检查该用户是否被授权访问 数据库 ,并确保正确的角色和权限分配。 最后,这种错误可能是因为 数据库 配置问题,比如说 数据库 实例或服务没有启动。在这种情况下,应该检查 数据库 是否正常运行,确保 数据库 实例或服务已经正确启动。 综上所述,ORA-01017错误通常是由于输入错误的用户名和密码、没有登录权限或 数据库 未正常运行等问题引起的。对于这种错误,我们需要检查输入的用户名和密码是否正确、该用户是否被授权访问 数据库 数据库 是否正常运行等,以确定解决方法。 ### 回答3: “ oracle 12c ora-01017: 用户名/口令无效; 登录被拒绝。”这个错误提示意味着用户输入的账号或者密码不正确,导致登录被拒绝。当出现这种错误时,需要首先检查输入的用户名和口令是否匹配,并且注意大小写是否正确。 在检查账号和密码之后,还需要确保 数据库 实例已经启动,并且监听器也已经启动。如果 数据库 实例或者监听程序未启动,会出现无法连接到 数据库 的情况。因此,需要确保相应的服务都已经启动。 此外,如果用户尝试连接到一个不存在的 数据库 或者 使用 错误的连接字符串,也有可能导致登录被拒绝。需要检查连接字符串是否正确,并且确保 数据库 实例名称和监听器名称也正确。 如果以上步骤都已经检查过,并且仍然无法登录,那么可能是由于权限问题或者安全策略导致的。需要检查用户是否具有正确的权限,并且确保 数据库 的安全策略不会阻止该用户的登录。 总之,当出现“ oracle 12c ora-01017: 用户名/口令无效; 登录被拒绝”错误提示时,需要逐步排查以上问题,以确定错误原因并解决问题。