JSON_SERIALIZE in Oracle Database 19c
The JSON_SERIALIZE function converts a JSON document from any supported data type to text.
oracle 19cconfigurationintermediate
by OracleDba
33 views
The JSON_SERIALIZE function converts a JSON document from any supported data type to text.
123456789101112131415161718192021222324252627282930313233343536373839404142434445
-- drop table json_documents purge;
create table json_documents (
id number,
data blob,
constraint json_documents_is_json check (data is json)
);
insert into json_documents (id, data) values (1, '{"id":1,"first_name":"Iron","last_name":"Man"}');
commit;
select data from json_documents;
DATA
--------------------------------------------------------------------------------
7B226964223A312C2266697273745F6E616D65223A2249726F6E222C226C6173745F6E616D65223A
SQL>
select blob_to_clob(data) as data from json_documents;
DATA
--------------------------------------------------------------------------------
{"id":1,"first_name":"Iron","last_name":"Man"}
SQL>
select utl_raw.cast_to_varchar2(data) as data from json_documents;
DATA
--------------------------------------------------------------------------------
{"id":1,"first_name":"Iron","last_name":"Man"}
SQL>
select json_query(data, '$') as data from json_documents;
DATA
----------------------------------------------------------------------------------------------------
{"id":1,"first_name":"Iron","last_name":"Man"}
1 row selected.
SQL>1234567891011121314151617181920212223242526
JSON_SERIALIZE (target_expr [ json_query_returning_clause ] [ PRETTY ]
[ ASCII ] [ TRUNCATE ] [ json_query_on_error_clause ])
select json_serialize(data) as data from json_documents;
DATA
--------------------------------------------------------------------------------
{"id":1,"first_name":"Iron","last_name":"Man"}
SQL>
select json_serialize(
json_object(empno, ename, hiredate returning blob)
pretty) as data
from emp
where empno = 7369;
DATA
--------------------------------------------------------------------------------
{
"empno" : 7369,
"ename" : "SMITH",
"hiredate" : "1980-12-17T00:00:00"
}
SQL>12345678910111213141516171819202122232425262728293031323334353637
select json_serialize(a.data
pretty
) as data
from json_documents a
where a.data.first_name = 'Iron';
DATA
--------------------------------------------------------------------------------
{
"id" : 1,
"first_name" : "Iron",
"last_name" : "Man"
}
SQL>
select json_serialize(a.data returning varchar2(10)
truncate
) as data
from json_documents a
where a.data.first_name = 'Iron';
DATA
---------------------------------------------------------------------------------
{"id":1,"f
SQL>
select json_serialize(a.data returning varchar2(10)) as data
from json_documents a
where a.data.first_name = 'Iron';
DATA
---------------------------------------------------------------------------------
{"id":1,"f
SQL>12345678910111213141516171819202122
-- Default behaviour.
select json_serialize('This is not JSON!'
null on error
) as data
from dual;
DATA
--------------------------------------------------------------------------------
SQL>
select json_serialize('This is not JSON!'
error on error
) as data
from dual;
*
ERROR at line 2:
ORA-40441: JSON syntax error
SQL>12345678910111213141516171819202122232425262728293031323334353637
set serveroutput on
declare
l_blob blob;
l_clob clob;
begin
l_blob := utl_raw.cast_to_raw('{"id":1,"first_name":"Iron","last_name":"Man"}');
l_clob := JSON_SERIALIZE(l_blob);
DBMS_OUTPUT.put_line('After : ' || l_clob);
END;
/
l_clob := JSON_SERIALIZE(l_blob);
*
ERROR at line 6:
ORA-06550: line 6, column 13:
PLS-00201: identifier 'JSON_SERIALIZE' must be declared
ORA-06550: line 6, column 3:
PL/SQL: Statement ignored
SQL>
declare
l_blob blob;
l_clob clob;
begin
l_blob := utl_raw.cast_to_raw('{"id":1,"first_name":"Iron","last_name":"Man"}');
select json_serialize(l_blob)
into l_clob
from dual;
dbms_output.put_line('After : ' || l_clob);
end;
/
After : {"id":1,"first_name":"Iron","last_name":"Man"}
SQL>123456789101112131415
declare
l_json json;
l_clob clob;
begin
l_json := json('{"id":1,"first_name":"Iron","last_name":"Man"}');
select json_serialize(l_json ordered)
into l_clob;
dbms_output.put_line('After : ' || l_clob);
end;
/
After : {"first_name":"Iron","id":1,"last_name":"Man"}
SQL>Please to add comments
No comments yet. Be the first to comment!