{"id":13804,"date":"2025-01-28T17:38:55","date_gmt":"2025-01-28T16:38:55","guid":{"rendered":"https:\/\/www.salvis.com\/blog\/?p=13804"},"modified":"2025-01-28T17:39:04","modified_gmt":"2025-01-28T16:39:04","slug":"avoid-implicit-type-conversion-in-json-access","status":"publish","type":"post","link":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/","title":{"rendered":"Avoid Implicit Type Conversion in JSON Access"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before comparing two values, the Oracle Database automatically ensures that both values have the same data type. It converts one of the values to match the data type of the other value. The <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/sqlrf\/Data-Type-Comparison-Rules.html#GUID-6DB331B5-0F34-4215-9A20-16AEA9D7FF4B\">SQL Language Reference manual<\/a> describes when and how implicit data conversions happen. However, Oracle recommends that you convert data types explicitly. This ensures consistent results and better performance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I am using JSON relational duality views in my current project. During development, I have stumbled across some implicit data conversions that I was unaware of and that are causing poor performance. I will use a simplified example to show you what I mean.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"#setup\">Setup<\/a><\/li>\n\n\n\n<li><a href=\"#json-relational-duality-view\">JSON-relational Duality View<\/a><\/li>\n\n\n\n<li><a href=\"#json-data-types\">JSON Data Types<\/a><\/li>\n\n\n\n<li><a href=\"#explicit-conversion\">Explicit Conversion<\/a><\/li>\n\n\n\n<li><a href=\"#json-collection-view\">JSON Collection View<\/a><\/li>\n\n\n\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"setup\">1. Setup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve tested this example with an Oracle Database 23.6 and 23.7. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In a schema of your choice you can run the following setup script:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">1) Setup table dept and emp<\/span><span role=\"button\" tabindex=\"0\" data-code=\"drop table if exists emp;\ndrop table if exists dept;\n\ncreate table dept (\n   deptno number(2, 0)      not null constraint dept_pk primary key,\n   dname  varchar2(14 char) not null,\n   loc    varchar2(13 char) not null\n);\n\ncreate table emp (\n   empno    number(4, 0)      not null  constraint emp_pk primary key,\n   ename    varchar2(10 char) not null,\n   job      varchar2(9 char)  not null,\n   mgr      number(4, 0)                constraint emp_mgr_fk references emp,\n   hiredate date              not null,\n   sal      number(7, 2)      not null,\n   comm     number(7, 2),\n   deptno   number(2, 0)      not null  constraint emp_deptno_fk references dept\n);\n\ninsert into dept (deptno, dname, loc)\nvalues (10, 'ACCOUNTING', 'NEW YORK'),\n       (20, 'RESEARCH',   'DALLAS'),\n       (30, 'SALES',      'CHICAGO'),\n       (40, 'OPERATIONS', 'BOSTON');\n\ninsert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)\nvalues (7566, 'JONES',  'MANAGER',   7839, date '1981-04-02', 2975, null, 20),\n       (7698, 'BLAKE',  'MANAGER',   7839, date '1981-05-01', 2850, null, 30),\n       (7782, 'CLARK',  'MANAGER',   7839, date '1981-06-09', 2450, null, 10),\n       (7788, 'SCOTT',  'ANALYST',   7566, date '1987-04-19', 3000, null, 20),\n       (7902, 'FORD',   'ANALYST',   7566, date '1981-12-03', 3000, null, 20),\n       (7499, 'ALLEN',  'SALESMAN',  7698, date '1981-02-20', 1600,  300, 30),\n       (7521, 'WARD',   'SALESMAN',  7698, date '1981-02-22', 1250,  500, 30),\n       (7654, 'MARTIN', 'SALESMAN',  7698, date '1981-09-28', 1250, 1400, 30),\n       (7844, 'TURNER', 'SALESMAN',  7698, date '1981-09-08', 1500,    0, 30),\n       (7900, 'JAMES',  'CLERK',     7698, date '1981-12-03',  950, null, 30),\n       (7934, 'MILLER', 'CLERK',     7782, date '1982-01-23', 1300, null, 10),\n       (7369, 'SMITH',  'CLERK',     7902, date '1980-12-17',  800, null, 20),\n       (7839, 'KING',   'PRESIDENT', null, date '1981-11-17', 5000, null, 10),\n       (7876, 'ADAMS',  'CLERK',     7788, date '1987-05-23', 1100, null, 20);\n\nbegin\n   dbms_stats.gather_table_stats(user, 'dept');\n   dbms_stats.gather_table_stats(user, 'emp');\nend;\n\/\n\nalter session set nls_date_format = 'YYYY-MM-DD';\ncolumn deptno format a6\ncolumn dname format a10\ncolumn loc format a9\ncolumn empid format a8\ncolumn empno format a5\ncolumn ename format a6\ncolumn mgr format a4\ncolumn sal format a4\ncolumn comm format a4\n\nselect * from dept;\nselect * from emp;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">drop<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">table<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">exists<\/span><span style=\"color: #D4D4D4\"> emp;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">drop<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">table<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #C586C0\">if<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">exists<\/span><span style=\"color: #D4D4D4\"> dept;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">create<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">table<\/span><span style=\"color: #D4D4D4\"> dept (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   deptno <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">)      <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">constraint<\/span><span style=\"color: #D4D4D4\"> dept_pk <\/span><span style=\"color: #569CD6\">primary key<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   dname  <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">14<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">char<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   loc    <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">13<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">char<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">create<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">table<\/span><span style=\"color: #D4D4D4\"> emp (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   empno    <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">)      <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">constraint<\/span><span style=\"color: #D4D4D4\"> emp_pk <\/span><span style=\"color: #569CD6\">primary key<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   ename    <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">char<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   job      <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">9<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">char<\/span><span style=\"color: #D4D4D4\">)  <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   mgr      <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">4<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">)                <\/span><span style=\"color: #569CD6\">constraint<\/span><span style=\"color: #D4D4D4\"> emp_mgr_fk <\/span><span style=\"color: #569CD6\">references<\/span><span style=\"color: #D4D4D4\"> emp,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   hiredate <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\">              <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   sal      <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">)      <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   comm     <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">7<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   deptno   <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #B5CEA8\">2<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">)      <\/span><span style=\"color: #569CD6\">not<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">constraint<\/span><span style=\"color: #D4D4D4\"> emp_deptno_fk <\/span><span style=\"color: #569CD6\">references<\/span><span style=\"color: #D4D4D4\"> dept<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">insert<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">into<\/span><span style=\"color: #D4D4D4\"> dept (deptno, dname, loc)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">values<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ACCOUNTING&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;NEW YORK&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;RESEARCH&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #CE9178\">&#39;DALLAS&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SALES&#39;<\/span><span style=\"color: #D4D4D4\">,      <\/span><span style=\"color: #CE9178\">&#39;CHICAGO&#39;<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">40<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;OPERATIONS&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;BOSTON&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">insert<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">into<\/span><span style=\"color: #D4D4D4\"> emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">values<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #B5CEA8\">7566<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;JONES&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;MANAGER&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-04-02&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2975<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7698<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;BLAKE&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;MANAGER&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-05-01&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2850<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7782<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;CLARK&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;MANAGER&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-06-09&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">2450<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7788<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SCOTT&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;ANALYST&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #B5CEA8\">7566<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1987-04-19&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7902<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;FORD&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #CE9178\">&#39;ANALYST&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #B5CEA8\">7566<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-12-03&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">3000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7499<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ALLEN&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;SALESMAN&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">7698<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-02-20&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1600<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">300<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7521<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;WARD&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #CE9178\">&#39;SALESMAN&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">7698<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-02-22&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1250<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">500<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7654<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;MARTIN&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SALESMAN&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">7698<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-09-28&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1250<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1400<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7844<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;TURNER&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SALESMAN&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">7698<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-09-08&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1500<\/span><span style=\"color: #D4D4D4\">,    <\/span><span style=\"color: #B5CEA8\">0<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7900<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;JAMES&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;CLERK&#39;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #B5CEA8\">7698<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-12-03&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">950<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">30<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7934<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;MILLER&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;CLERK&#39;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #B5CEA8\">7782<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1982-01-23&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1300<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7369<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;SMITH&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;CLERK&#39;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #B5CEA8\">7902<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1980-12-17&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #B5CEA8\">800<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7839<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;KING&#39;<\/span><span style=\"color: #D4D4D4\">,   <\/span><span style=\"color: #CE9178\">&#39;PRESIDENT&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1981-11-17&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">5000<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       (<\/span><span style=\"color: #B5CEA8\">7876<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;ADAMS&#39;<\/span><span style=\"color: #D4D4D4\">,  <\/span><span style=\"color: #CE9178\">&#39;CLERK&#39;<\/span><span style=\"color: #D4D4D4\">,     <\/span><span style=\"color: #B5CEA8\">7788<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #CE9178\">&#39;1987-05-23&#39;<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">1100<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #B5CEA8\">20<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">begin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #DCDCAA\">dbms_stats.<\/span><span style=\"color: #4EC9B0\">gather_table_stats<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">user<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;dept&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   <\/span><span style=\"color: #DCDCAA\">dbms_stats.<\/span><span style=\"color: #4EC9B0\">gather_table_stats<\/span><span style=\"color: #D4D4D4\">(<\/span><span style=\"color: #DCDCAA\">user<\/span><span style=\"color: #D4D4D4\">, <\/span><span style=\"color: #CE9178\">&#39;emp&#39;<\/span><span style=\"color: #D4D4D4\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">end<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">alter session<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">set<\/span><span style=\"color: #D4D4D4\"> nls_date_format = <\/span><span style=\"color: #CE9178\">&#39;YYYY-MM-DD&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> deptno format a6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> dname format a10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> loc format a9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> empid format a8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> empno format a5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> ename format a6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> mgr format a4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> sal format a4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> comm format a4<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> * <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> dept;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> * <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> emp;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"Table EMP dropped.\n\n\nTable DEPT dropped.\n\n\nTable DEPT created.\n\n\nTable EMP created.\n\n\n4 rows inserted.\n\n\n14 rows inserted.\n\n\nPL\/SQL procedure successfully completed.\n\n\nSession altered.\n\n\nDEPTNO DNAME      LOC      \n------ ---------- ---------\n    10 ACCOUNTING NEW YORK \n    20 RESEARCH   DALLAS   \n    30 SALES      CHICAGO  \n    40 OPERATIONS BOSTON   \n\n\nEMPNO ENAME  JOB        MGR HIREDATE    SAL COMM DEPTNO\n----- ------ --------- ---- ---------- ---- ---- ------\n 7566 JONES  MANAGER   7839 1981-04-02 2975          20\n 7698 BLAKE  MANAGER   7839 1981-05-01 2850          30\n 7782 CLARK  MANAGER   7839 1981-06-09 2450          10\n 7788 SCOTT  ANALYST   7566 1987-04-19 3000          20\n 7902 FORD   ANALYST   7566 1981-12-03 3000          20\n 7499 ALLEN  SALESMAN  7698 1981-02-20 1600  300     30\n 7521 WARD   SALESMAN  7698 1981-02-22 1250  500     30\n 7654 MARTIN SALESMAN  7698 1981-09-28 1250 1400     30\n 7844 TURNER SALESMAN  7698 1981-09-08 1500    0     30\n 7900 JAMES  CLERK     7698 1981-12-03  950          30\n 7934 MILLER CLERK     7782 1982-01-23 1300          10\n 7369 SMITH  CLERK     7902 1980-12-17  800          20\n 7839 KING   PRESIDENT      1981-11-17 5000          10\n 7876 ADAMS  CLERK     7788 1987-05-23 1100          20\n\n14 rows selected. \" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">Table EMP dropped.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Table DEPT dropped.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Table DEPT created.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Table EMP created.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">4 rows inserted.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">14 rows inserted.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">PL\/SQL procedure successfully completed.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Session altered.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">DEPTNO DNAME      LOC      <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">------ ---------- ---------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    10 ACCOUNTING NEW YORK <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    20 RESEARCH   DALLAS   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    30 SALES      CHICAGO  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    40 OPERATIONS BOSTON   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">EMPNO ENAME  JOB        MGR HIREDATE    SAL COMM DEPTNO<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">----- ------ --------- ---- ---------- ---- ---- ------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7566 JONES  MANAGER   7839 1981-04-02 2975          20<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7698 BLAKE  MANAGER   7839 1981-05-01 2850          30<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7782 CLARK  MANAGER   7839 1981-06-09 2450          10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7788 SCOTT  ANALYST   7566 1987-04-19 3000          20<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7902 FORD   ANALYST   7566 1981-12-03 3000          20<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7499 ALLEN  SALESMAN  7698 1981-02-20 1600  300     30<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7521 WARD   SALESMAN  7698 1981-02-22 1250  500     30<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7654 MARTIN SALESMAN  7698 1981-09-28 1250 1400     30<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7844 TURNER SALESMAN  7698 1981-09-08 1500    0     30<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7900 JAMES  CLERK     7698 1981-12-03  950          30<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7934 MILLER CLERK     7782 1982-01-23 1300          10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7369 SMITH  CLERK     7902 1980-12-17  800          20<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7839 KING   PRESIDENT      1981-11-17 5000          10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> 7876 ADAMS  CLERK     7788 1987-05-23 1100          20<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">14 rows selected. <\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The model has primary and foreign keys which are required for the duality views. However, the constraints do not need to be enabled.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"json-relational-duality-view\">2. JSON-relational Duality View<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now let&#8217;s create an updateable duality view for the model we created earlier.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">2) Create duality view dept_dv<\/span><span role=\"button\" tabindex=\"0\" data-code=\"create or replace json duality view dept_dv as\ndept @insert @update @delete\n{\n   _id: deptno\n   dname\n   loc\n   emps: emp @insert @update @delete\n      {\n         empno\n         ename\n         job\n         emp @unnest @link(from: [mgr])\n            {\n               mgr    : empno @nocheck\n               mgrname: ename @nocheck\n            }\n         hiredate\n         sal\n         comm\n      }\n};\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">create or replace<\/span><span style=\"color: #D4D4D4\"> json duality <\/span><span style=\"color: #569CD6\">view<\/span><span style=\"color: #D4D4D4\"> dept_dv <\/span><span style=\"color: #569CD6\">as<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">dept @<\/span><span style=\"color: #569CD6\">insert<\/span><span style=\"color: #D4D4D4\"> @<\/span><span style=\"color: #569CD6\">update<\/span><span style=\"color: #D4D4D4\"> @<\/span><span style=\"color: #569CD6\">delete<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   _id: deptno<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   dname<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   loc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   emps: emp @<\/span><span style=\"color: #569CD6\">insert<\/span><span style=\"color: #D4D4D4\"> @<\/span><span style=\"color: #569CD6\">update<\/span><span style=\"color: #D4D4D4\"> @<\/span><span style=\"color: #569CD6\">delete<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         empno<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         ename<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         job<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         emp @unnest @link(<\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\">: [mgr])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">               mgr    : empno @nocheck<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">               mgrname: ename @nocheck<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         hiredate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         sal<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">         comm<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">};<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"Json duality view DEPT_DV created.\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">Json duality view DEPT_DV created.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">We can query the department <code>10<\/code> as follows:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">3) Query deptno 10 in dept_dv<\/span><span role=\"button\" tabindex=\"0\" data-code=\"column json_data format a50\nalter session disable parallel query;\nset pagesize 1000\n\nselect json_serialize(dv.data returning varchar2 pretty) as json_data\n  from dept_dv dv\n where dv.data.&quot;_id&quot; = 10;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> json_data format a50<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">alter session<\/span><span style=\"color: #D4D4D4\"> disable parallel query;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">set<\/span><span style=\"color: #D4D4D4\"> pagesize <\/span><span style=\"color: #B5CEA8\">1000<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> json_serialize(dv.data <\/span><span style=\"color: #569CD6\">returning<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\"> pretty) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> json_data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> dept_dv dv<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> dv.data.<\/span><span style=\"color: #CE9178\">&quot;_id&quot;<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"Session altered.\n\n\nJSON_DATA\n--------------------------------------------------\n{\n  &quot;_id&quot; : 10,\n  &quot;_metadata&quot; :\n  {\n    &quot;etag&quot; : &quot;E0146035FE26EE16D4968A21E6350D81&quot;,\n    &quot;asof&quot; : &quot;00002604AFC8A4BC&quot;\n  },\n  &quot;dname&quot; : &quot;ACCOUNTING&quot;,\n  &quot;loc&quot; : &quot;NEW YORK&quot;,\n  &quot;emps&quot; :\n  [\n    {\n      &quot;empno&quot; : 7782,\n      &quot;ename&quot; : &quot;CLARK&quot;,\n      &quot;job&quot; : &quot;MANAGER&quot;,\n      &quot;mgr&quot; : 7839,\n      &quot;mgrname&quot; : &quot;KING&quot;,\n      &quot;hiredate&quot; : &quot;1981-06-09T00:00:00&quot;,\n      &quot;sal&quot; : 2450,\n      &quot;comm&quot; : null\n    },\n    {\n      &quot;empno&quot; : 7839,\n      &quot;ename&quot; : &quot;KING&quot;,\n      &quot;job&quot; : &quot;PRESIDENT&quot;,\n      &quot;hiredate&quot; : &quot;1981-11-17T00:00:00&quot;,\n      &quot;sal&quot; : 5000,\n      &quot;comm&quot; : null\n    },\n    {\n      &quot;empno&quot; : 7934,\n      &quot;ename&quot; : &quot;MILLER&quot;,\n      &quot;job&quot; : &quot;CLERK&quot;,\n      &quot;mgr&quot; : 7782,\n      &quot;mgrname&quot; : &quot;CLARK&quot;,\n      &quot;hiredate&quot; : &quot;1982-01-23T00:00:00&quot;,\n      &quot;sal&quot; : 1300,\n      &quot;comm&quot; : null\n    }\n  ]\n}\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">Session altered.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">JSON_DATA<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;_id&quot; : 10,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;_metadata&quot; :<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &quot;etag&quot; : &quot;E0146035FE26EE16D4968A21E6350D81&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &quot;asof&quot; : &quot;00002604AFC8A4BC&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;dname&quot; : &quot;ACCOUNTING&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;loc&quot; : &quot;NEW YORK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;emps&quot; :<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;empno&quot; : 7782,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;ename&quot; : &quot;CLARK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;job&quot; : &quot;MANAGER&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgr&quot; : 7839,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgrname&quot; : &quot;KING&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;hiredate&quot; : &quot;1981-06-09T00:00:00&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;sal&quot; : 2450,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;comm&quot; : null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;empno&quot; : 7839,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;ename&quot; : &quot;KING&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;job&quot; : &quot;PRESIDENT&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;hiredate&quot; : &quot;1981-11-17T00:00:00&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;sal&quot; : 5000,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;comm&quot; : null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;empno&quot; : 7934,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;ename&quot; : &quot;MILLER&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;job&quot; : &quot;CLERK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgr&quot; : 7782,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgrname&quot; : &quot;CLARK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;hiredate&quot; : &quot;1982-01-23T00:00:00&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;sal&quot; : 1300,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;comm&quot; : null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  ]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The where clause in line 7 contains an implicit conversion. It&#8217;s not that obvious and the execution plan does not help to spot it either.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">4) Execution plan<\/span><span role=\"button\" tabindex=\"0\" data-code=\"PLAN_TABLE_OUTPUT\n---------------------------------------------------------------------------------------\nSQL_ID  8nns7xgu0v6vu, child number 4\n-------------------------------------\nselect json_serialize(dv.data returning varchar2 pretty) as json_data   \nfrom dept_dv dv  where dv.data.&quot;_id&quot; = 10\n \nPlan hash value: 2166484641\n \n---------------------------------------------------------------------------------------\n| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |\n---------------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT            |         |       |       |     7 (100)|          |\n|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    10 |     1   (0)| 00:00:01 |\n|*  2 |   INDEX UNIQUE SCAN         | EMP_PK  |     1 |       |     0   (0)|          |\n|   3 |  SORT GROUP BY              |         |     1 |    38 |            |          |\n|*  4 |   TABLE ACCESS FULL         | EMP     |     5 |   190 |     3   (0)| 00:00:01 |\n|   5 |  TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |\n|*  6 |   INDEX UNIQUE SCAN         | DEPT_PK |     1 |       |     0   (0)|          |\n---------------------------------------------------------------------------------------\n \nPredicate Information (identified by operation id):\n---------------------------------------------------\n \n   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)\n   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)\n   6 - access(&quot;DEPTNO&quot;=10)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">PLAN_TABLE_OUTPUT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SQL_ID  8nns7xgu0v6vu, child number 4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">-------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">select json_serialize(dv.data returning varchar2 pretty) as json_data   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">from dept_dv dv  where dv.data.&quot;_id&quot; = 10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Plan hash value: 2166484641<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   0 | SELECT STATEMENT            |         |       |       |     7 (100)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    10 |     1   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  2 |   INDEX UNIQUE SCAN         | EMP_PK  |     1 |       |     0   (0)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   3 |  SORT GROUP BY              |         |     1 |    38 |            |          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  4 |   TABLE ACCESS FULL         | EMP     |     5 |   190 |     3   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   5 |  TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">|*  6 |   INDEX UNIQUE SCAN         | DEPT_PK |     1 |       |     0   (0)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Predicate Information (identified by operation id):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   6 - access(&quot;DEPTNO&quot;=10)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The highlighted lines show that a unique index scan has been performed for deptno <code>10<\/code>. This looks good. So where does the implicit conversion take place?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"json-data-types\">3. JSON Data Types<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The condition <code>dv.data.\"_id\" = 10<\/code> in the where clause compares a JSON data type with a numeric data type. As a result, the Oracle Database needs to convert one of the values. It decided to convert the JSON to a numeric value. That&#8217;s what we see in the execution plan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Really? Can we prove this claim? Yes, with the following statement.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">5) Determine JSON data type<\/span><span role=\"button\" tabindex=\"0\" data-code=\"select is_json_condition, value\n  from (\n          select deptno is json as is_json,\n                 deptno is json(value) as is_json_value,\n                 deptno is json(array) as is_json_array,\n                 deptno is json(object) as is_json_object,\n                 deptno is json(scalar) as is_json_scalar,\n                 deptno is json(scalar number) as is_json_scalar_number,\n                 deptno is json(scalar string) as is_json_scalar_string,\n                 deptno is json(scalar binary_double) as is_json_scalar_binary_double,\n                 deptno is json(scalar binary_float) as is_json_scalar_binary_float,\n                 deptno is json(scalar date) as is_json_scalar_date,\n                 deptno is json(scalar timestamp) as is_json_scalar_timestamp,\n                 deptno is json(scalar timestamp with time zone) as is_json_scalar_timestamp_with_time_zone,\n                 deptno is json(scalar null) as is_json_scalar_null,\n                 deptno is json(scalar boolean) as is_json_scalar_boolean,\n                 deptno is json(scalar binary) as is_json_scalar_binary,\n                 deptno is json(scalar interval year to month) as is_json_scalar_interval_year_to_month,\n                 deptno is json(scalar interval day to second) as is_json_scalar_interval_day_to_second\n            from (select dv.data.&quot;_id&quot; as deptno from dept_dv dv where rownum = 1)\n       ) src unpivot (\n          value for is_json_condition in (\n             is_json,\n             is_json_value,\n             is_json_array,\n             is_json_object,\n             is_json_scalar,\n             is_json_scalar_number,\n             is_json_scalar_string,\n             is_json_scalar_binary_double,\n             is_json_scalar_binary_float,\n             is_json_scalar_date,\n             is_json_scalar_timestamp,\n             is_json_scalar_timestamp_with_time_zone,\n             is_json_scalar_null,\n             is_json_scalar_boolean,\n             is_json_scalar_binary,\n             is_json_scalar_interval_year_to_month,\n             is_json_scalar_interval_day_to_second\n          )\n       );\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> is_json_condition, value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          <\/span><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(value) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_value,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(array) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_array,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(object) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_object,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_number,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar string) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_string,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">binary_double<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_binary_double,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">binary_float<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_binary_float,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">date<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_date,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">timestamp<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_timestamp,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">timestamp with time zone<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_timestamp_with_time_zone,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">null<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_null,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar <\/span><span style=\"color: #569CD6\">boolean<\/span><span style=\"color: #D4D4D4\">) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_boolean,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar binary) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_binary,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar interval year to month) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_interval_year_to_month,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                 deptno <\/span><span style=\"color: #569CD6\">is<\/span><span style=\"color: #D4D4D4\"> json(scalar interval day to second) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> is_json_scalar_interval_day_to_second<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> (<\/span><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> dv.data.<\/span><span style=\"color: #CE9178\">&quot;_id&quot;<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> deptno <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> dept_dv dv <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">rownum<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">1<\/span><span style=\"color: #D4D4D4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       ) src <\/span><span style=\"color: #569CD6\">unpivot<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          value <\/span><span style=\"color: #C586C0\">for<\/span><span style=\"color: #D4D4D4\"> is_json_condition <\/span><span style=\"color: #569CD6\">in<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_value,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_array,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_object,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_number,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_string,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_binary_double,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_binary_float,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_date,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_timestamp,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_timestamp_with_time_zone,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_null,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_boolean,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_binary,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_interval_year_to_month,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">             is_json_scalar_interval_day_to_second<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">          )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">       );<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"IS_JSON_CONDITION                       VALUE\n--------------------------------------- -----\nIS_JSON                                 true \nIS_JSON_VALUE                           true \nIS_JSON_ARRAY                           false\nIS_JSON_OBJECT                          false\nIS_JSON_SCALAR                          true \nIS_JSON_SCALAR_NUMBER                   true \nIS_JSON_SCALAR_STRING                   false\nIS_JSON_SCALAR_BINARY_DOUBLE            false\nIS_JSON_SCALAR_BINARY_FLOAT             false\nIS_JSON_SCALAR_DATE                     false\nIS_JSON_SCALAR_TIMESTAMP                false\nIS_JSON_SCALAR_TIMESTAMP_WITH_TIME_ZONE false\nIS_JSON_SCALAR_NULL                     false\nIS_JSON_SCALAR_BOOLEAN                  false\nIS_JSON_SCALAR_BINARY                   false\nIS_JSON_SCALAR_INTERVAL_YEAR_TO_MONTH   false\nIS_JSON_SCALAR_INTERVAL_DAY_TO_SECOND   false\n\n17 rows selected. \" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_CONDITION                       VALUE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------------------------------------- -----<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">IS_JSON                                 true <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">IS_JSON_VALUE                           true <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_ARRAY                           false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_OBJECT                          false<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR                          true <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_NUMBER                   true <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_STRING                   false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_BINARY_DOUBLE            false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_BINARY_FLOAT             false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_DATE                     false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_TIMESTAMP                false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_TIMESTAMP_WITH_TIME_ZONE false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_NULL                     false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_BOOLEAN                  false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_BINARY                   false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_INTERVAL_YEAR_TO_MONTH   false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">IS_JSON_SCALAR_INTERVAL_DAY_TO_SECOND   false<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">17 rows selected. <\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">In line 20 we query <code>dv.data.\"_id\"<\/code> and use the <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/sqlrf\/SQL-JSON-Conditions.html#GUID-99B9493D-2929-4A09-BA39-A56F8E7319DA\">IS JSON condition<\/a> to determine the data type. The most granular type is JSON scalar number. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"explicit-conversion\">4. Explicit Conversion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So, we know now, that we need to convert a JSON scalar number to a number. And how do we do that? &#8211; By using a <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/adjsn\/sql-json-path-expression-item-methods.html#GUID-8656CAB9-C293-4A99-BB62-F38F3CFC4C13__TABLE_U23_R3C_DSB\">SQL\/JSON path expression method<\/a>, as in the next example.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">7) Query deptno 10 in dept_dv with explicit type conversion<\/span><span role=\"button\" tabindex=\"0\" data-code=\"select json_serialize(dv.data returning varchar2 pretty) as json_data\n  from dept_dv dv\n where dv.data.&quot;_id&quot;.number() = 10;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> json_serialize(dv.data <\/span><span style=\"color: #569CD6\">returning<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\"> pretty) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> json_data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> dept_dv dv<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> dv.data.<\/span><span style=\"color: #CE9178\">&quot;_id&quot;<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">() = <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">We used the <code>.number()<\/code> method in this example. The execution plan for this query looks now like this:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">8) Execution plan querying dept_dv with explicit type conversion<\/span><span role=\"button\" tabindex=\"0\" data-code=\"PLAN_TABLE_OUTPUT\n---------------------------------------------------------------------------------------\nSQL_ID  4rjg8g02bph16, child number 2\n-------------------------------------\nselect json_serialize(dv.data returning varchar2 pretty) as json_data   \nfrom dept_dv dv  where dv.data.&quot;_id&quot;.number() = 10\n \nPlan hash value: 2166484641\n \n---------------------------------------------------------------------------------------\n| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |\n---------------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT            |         |       |       |     7 (100)|          |\n|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    10 |     1   (0)| 00:00:01 |\n|*  2 |   INDEX UNIQUE SCAN         | EMP_PK  |     1 |       |     0   (0)|          |\n|   3 |  SORT GROUP BY              |         |     1 |    38 |            |          |\n|*  4 |   TABLE ACCESS FULL         | EMP     |     5 |   190 |     3   (0)| 00:00:01 |\n|   5 |  TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |\n|*  6 |   INDEX UNIQUE SCAN         | DEPT_PK |     1 |       |     0   (0)|          |\n---------------------------------------------------------------------------------------\n \nPredicate Information (identified by operation id):\n---------------------------------------------------\n \n   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)\n   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)\n   6 - access(&quot;DEPTNO&quot;=10)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">PLAN_TABLE_OUTPUT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SQL_ID  4rjg8g02bph16, child number 2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">-------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">select json_serialize(dv.data returning varchar2 pretty) as json_data   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">from dept_dv dv  where dv.data.&quot;_id&quot;.number() = 10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Plan hash value: 2166484641<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   0 | SELECT STATEMENT            |         |       |       |     7 (100)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    10 |     1   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  2 |   INDEX UNIQUE SCAN         | EMP_PK  |     1 |       |     0   (0)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   3 |  SORT GROUP BY              |         |     1 |    38 |            |          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  4 |   TABLE ACCESS FULL         | EMP     |     5 |   190 |     3   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   5 |  TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  6 |   INDEX UNIQUE SCAN         | DEPT_PK |     1 |       |     0   (0)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Predicate Information (identified by operation id):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   6 - access(&quot;DEPTNO&quot;=10)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The plan looks the same as without calling the <code>.number()<\/code> method, but in this case, we did not rely on implicit type conversion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;ve proven, that a <code>.number()<\/code> call does not make things worse. But are there cases where such an explicit type conversion results in a better execution plan?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"json-collection-view\">5. JSON Collection View<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s say we need a view that filters the data in the duality view. For example, for security purposes. One way to achieve this is to create a JSON collection view. From a consumer point of view, such a view behaves 100% the same as a duality view. The only difference is that it is read-only and allows the full SQL grammar to define such a view.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s an example.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">9) Create JSON collection view dept_cv<\/span><span role=\"button\" tabindex=\"0\" data-code=\"create or replace json collection view dept_cv as\nselect dv.data\n  from dept_dv dv\n where dv.data.&quot;_id&quot;.number() = 10 or dv.data.loc.string() = 'DALLAS';\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">create or replace<\/span><span style=\"color: #D4D4D4\"> json collection <\/span><span style=\"color: #569CD6\">view<\/span><span style=\"color: #D4D4D4\"> dept_cv <\/span><span style=\"color: #569CD6\">as<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> dv.data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> dept_dv dv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> dv.data.<\/span><span style=\"color: #CE9178\">&quot;_id&quot;<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">() = <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">or<\/span><span style=\"color: #D4D4D4\"> dv.data.loc.string() = <\/span><span style=\"color: #CE9178\">&#39;DALLAS&#39;<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"Json collection view DEPT_CV created.\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">Json collection view DEPT_CV created.<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Now, let&#8217;s run a query with implicit type conversion.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">10) Query deptno 10 in dept_cv<\/span><span role=\"button\" tabindex=\"0\" data-code=\"column json_data format a50\nalter session disable parallel query;\nset pagesize 1000\n\nselect json_serialize(cv.data returning varchar2 pretty) as json_data\n  from dept_cv cv\n where cv.data.&quot;_id&quot; = 10;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">column<\/span><span style=\"color: #D4D4D4\"> json_data format a50<\/span><\/span>\n<span class=\"line\"><span style=\"color: #DCDCAA\">alter session<\/span><span style=\"color: #D4D4D4\"> disable parallel query;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">set<\/span><span style=\"color: #D4D4D4\"> pagesize <\/span><span style=\"color: #B5CEA8\">1000<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> json_serialize(cv.data <\/span><span style=\"color: #569CD6\">returning<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\"> pretty) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> json_data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> dept_cv cv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> cv.data.<\/span><span style=\"color: #CE9178\">&quot;_id&quot;<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"Session altered.\n\n\nJSON_DATA\n--------------------------------------------------\n{\n  &quot;_id&quot; : 10,\n  &quot;_metadata&quot; :\n  {\n    &quot;etag&quot; : &quot;E0146035FE26EE16D4968A21E6350D81&quot;,\n    &quot;asof&quot; : &quot;00002604B0C08AAE&quot;\n  },\n  &quot;dname&quot; : &quot;ACCOUNTING&quot;,\n  &quot;loc&quot; : &quot;NEW YORK&quot;,\n  &quot;emps&quot; :\n  [\n    {\n      &quot;empno&quot; : 7782,\n      &quot;ename&quot; : &quot;CLARK&quot;,\n      &quot;job&quot; : &quot;MANAGER&quot;,\n      &quot;mgr&quot; : 7839,\n      &quot;mgrname&quot; : &quot;KING&quot;,\n      &quot;hiredate&quot; : &quot;1981-06-09T00:00:00&quot;,\n      &quot;sal&quot; : 2450,\n      &quot;comm&quot; : null\n    },\n    {\n      &quot;empno&quot; : 7839,\n      &quot;ename&quot; : &quot;KING&quot;,\n      &quot;job&quot; : &quot;PRESIDENT&quot;,\n      &quot;hiredate&quot; : &quot;1981-11-17T00:00:00&quot;,\n      &quot;sal&quot; : 5000,\n      &quot;comm&quot; : null\n    },\n    {\n      &quot;empno&quot; : 7934,\n      &quot;ename&quot; : &quot;MILLER&quot;,\n      &quot;job&quot; : &quot;CLERK&quot;,\n      &quot;mgr&quot; : 7782,\n      &quot;mgrname&quot; : &quot;CLARK&quot;,\n      &quot;hiredate&quot; : &quot;1982-01-23T00:00:00&quot;,\n      &quot;sal&quot; : 1300,\n      &quot;comm&quot; : null\n    }\n  ]\n}\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">Session altered.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"><\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">JSON_DATA<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;_id&quot; : 10,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;_metadata&quot; :<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &quot;etag&quot; : &quot;E0146035FE26EE16D4968A21E6350D81&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    &quot;asof&quot; : &quot;00002604B0C08AAE&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;dname&quot; : &quot;ACCOUNTING&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;loc&quot; : &quot;NEW YORK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  &quot;emps&quot; :<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;empno&quot; : 7782,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;ename&quot; : &quot;CLARK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;job&quot; : &quot;MANAGER&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgr&quot; : 7839,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgrname&quot; : &quot;KING&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;hiredate&quot; : &quot;1981-06-09T00:00:00&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;sal&quot; : 2450,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;comm&quot; : null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;empno&quot; : 7839,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;ename&quot; : &quot;KING&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;job&quot; : &quot;PRESIDENT&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;hiredate&quot; : &quot;1981-11-17T00:00:00&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;sal&quot; : 5000,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;comm&quot; : null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    },<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;empno&quot; : 7934,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;ename&quot; : &quot;MILLER&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;job&quot; : &quot;CLERK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgr&quot; : 7782,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;mgrname&quot; : &quot;CLARK&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;hiredate&quot; : &quot;1982-01-23T00:00:00&quot;,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;sal&quot; : 1300,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">      &quot;comm&quot; : null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  ]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The execution plan of the query above looks like this:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">11) Execution plan querying dept_cv with implicit type conversion<\/span><span role=\"button\" tabindex=\"0\" data-code=\"PLAN_TABLE_OUTPUT\n--------------------------------------------------------------------------------------\nSQL_ID  gkhradvxjrwfq, child number 4\n-------------------------------------\nselect json_serialize(cv.data returning varchar2 pretty) as json_data   \nfrom dept_cv cv  where cv.data.&quot;_id&quot; = 10\n \nPlan hash value: 1318549807\n \n--------------------------------------------------------------------------------------\n| Id  | Operation                   | Name   | Rows  | Bytes | Cost (%CPU)| Time     |\n--------------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT            |        |       |       |     9 (100)|          |\n|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    10 |     1   (0)| 00:00:01 |\n|*  2 |   INDEX UNIQUE SCAN         | EMP_PK |     1 |       |     0   (0)|          |\n|   3 |  SORT GROUP BY              |        |     1 |    38 |            |          |\n|*  4 |   TABLE ACCESS FULL         | EMP    |     5 |   190 |     3   (0)| 00:00:01 |\n|*  5 |  TABLE ACCESS FULL          | DEPT   |     1 |    20 |     3   (0)| 00:00:01 |\n--------------------------------------------------------------------------------------\n \nPredicate Information (identified by operation id):\n---------------------------------------------------\n \n   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)\n   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)\n   5 - filter(((&quot;DEPTNO&quot;=10 OR &quot;LOC&quot;='DALLAS') AND \n              JSON_VALUE(JSON_SCALAR(&quot;DEPTNO&quot; JSON NULL ON NULL ) FORMAT OSON , '$' \n              RETURNING NUMBER NULL ON ERROR TYPE(STRICT) )=10))\n \nSQL Analysis Report (identified by operation id\/Query Block Name\/Object Alias):\n-------------------------------------------------------------------------------\n \n   5 -  SEL$95C0DFA4 \/ &quot;OUTER_ALIAS0&quot;@&quot;SEL$3&quot;\n           -  The following columns have predicates which preclude their \n              use as keys in index range scan. Consider rewriting the \n              predicates.\n                &quot;DEPTNO&quot;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">PLAN_TABLE_OUTPUT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SQL_ID  gkhradvxjrwfq, child number 4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">-------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">select json_serialize(cv.data returning varchar2 pretty) as json_data   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">from dept_cv cv  where cv.data.&quot;_id&quot; = 10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Plan hash value: 1318549807<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">| Id  | Operation                   | Name   | Rows  | Bytes | Cost (%CPU)| Time     |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   0 | SELECT STATEMENT            |        |       |       |     9 (100)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   1 |  TABLE ACCESS BY INDEX ROWID| EMP    |     1 |    10 |     1   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  2 |   INDEX UNIQUE SCAN         | EMP_PK |     1 |       |     0   (0)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   3 |  SORT GROUP BY              |        |     1 |    38 |            |          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  4 |   TABLE ACCESS FULL         | EMP    |     5 |   190 |     3   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">|*  5 |  TABLE ACCESS FULL          | DEPT   |     1 |    20 |     3   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">--------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Predicate Information (identified by operation id):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   5 - filter(((&quot;DEPTNO&quot;=10 OR &quot;LOC&quot;=&#39;DALLAS&#39;) AND <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">              JSON_VALUE(JSON_SCALAR(&quot;DEPTNO&quot; JSON NULL ON NULL ) FORMAT OSON , &#39;$&#39; <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">              RETURNING NUMBER NULL ON ERROR TYPE(STRICT) )=10))<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SQL Analysis Report (identified by operation id\/Query Block Name\/Object Alias):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">-------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   5 -  SEL$95C0DFA4 \/ &quot;OUTER_ALIAS0&quot;@&quot;SEL$3&quot;<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">           -  The following columns have predicates which preclude their <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">              use as keys in index range scan. Consider rewriting the <\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">              predicates.<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">                &quot;DEPTNO&quot;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The SQL analysis report at the bottom is interesting. It clearly states that no index range scan was used and that we should rewrite the query to avoid implicit type conversion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s do that.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">12) Query deptno 10 in dept_cv with explicit type conversion<\/span><span role=\"button\" tabindex=\"0\" data-code=\"select json_serialize(cv.data returning varchar2 pretty) as json_data\n  from dept_cv cv\n where cv.data.&quot;_id&quot;.number() = 10;\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #569CD6\">select<\/span><span style=\"color: #D4D4D4\"> json_serialize(cv.data <\/span><span style=\"color: #569CD6\">returning<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">varchar2<\/span><span style=\"color: #D4D4D4\"> pretty) <\/span><span style=\"color: #569CD6\">as<\/span><span style=\"color: #D4D4D4\"> json_data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">  <\/span><span style=\"color: #569CD6\">from<\/span><span style=\"color: #D4D4D4\"> dept_cv cv<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">where<\/span><span style=\"color: #D4D4D4\"> cv.data.<\/span><span style=\"color: #CE9178\">&quot;_id&quot;<\/span><span style=\"color: #D4D4D4\">.<\/span><span style=\"color: #569CD6\">number<\/span><span style=\"color: #D4D4D4\">() = <\/span><span style=\"color: #B5CEA8\">10<\/span><span style=\"color: #D4D4D4\">;<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">And now the execution plan has changed for the better.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7\">13) Execution plan querying dept_cv with explicit type conversion<\/span><span role=\"button\" tabindex=\"0\" data-code=\"PLAN_TABLE_OUTPUT\n---------------------------------------------------------------------------------------\nSQL_ID  cca5xrgndnmkd, child number 2\n-------------------------------------\nselect json_serialize(cv.data returning varchar2 pretty) as json_data   \nfrom dept_cv cv  where cv.data.&quot;_id&quot;.number() = 10\n \nPlan hash value: 2166484641\n \n---------------------------------------------------------------------------------------\n| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |\n---------------------------------------------------------------------------------------\n|   0 | SELECT STATEMENT            |         |       |       |     7 (100)|          |\n|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    10 |     1   (0)| 00:00:01 |\n|*  2 |   INDEX UNIQUE SCAN         | EMP_PK  |     1 |       |     0   (0)|          |\n|   3 |  SORT GROUP BY              |         |     1 |    38 |            |          |\n|*  4 |   TABLE ACCESS FULL         | EMP     |     5 |   190 |     3   (0)| 00:00:01 |\n|   5 |  TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |\n|*  6 |   INDEX UNIQUE SCAN         | DEPT_PK |     1 |       |     0   (0)|          |\n---------------------------------------------------------------------------------------\n \nPredicate Information (identified by operation id):\n---------------------------------------------------\n \n   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)\n   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)\n   6 - access(&quot;DEPTNO&quot;=10)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D4D4D4\">PLAN_TABLE_OUTPUT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">SQL_ID  cca5xrgndnmkd, child number 2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">-------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">select json_serialize(cv.data returning varchar2 pretty) as json_data   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">from dept_cv cv  where cv.data.&quot;_id&quot;.number() = 10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Plan hash value: 2166484641<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">| Id  | Operation                   | Name    | Rows  | Bytes | Cost (%CPU)| Time     |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   0 | SELECT STATEMENT            |         |       |       |     7 (100)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   1 |  TABLE ACCESS BY INDEX ROWID| EMP     |     1 |    10 |     1   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  2 |   INDEX UNIQUE SCAN         | EMP_PK  |     1 |       |     0   (0)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   3 |  SORT GROUP BY              |         |     1 |    38 |            |          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|*  4 |   TABLE ACCESS FULL         | EMP     |     5 |   190 |     3   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">|   5 |  TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">|*  6 |   INDEX UNIQUE SCAN         | DEPT_PK |     1 |       |     0   (0)|          |<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">Predicate Information (identified by operation id):<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">---------------------------------------------------<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   2 - access(&quot;OUTER_ALIAS2&quot;.&quot;EMPNO&quot;=:B1)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">   4 - filter(&quot;OUTER_ALIAS1&quot;.&quot;DEPTNO&quot;=:B1)<\/span><\/span>\n<span class=\"line cbp-line-highlight\"><span style=\"color: #D4D4D4\">   6 - access(&quot;DEPTNO&quot;=10)<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Making an index unique scan possible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">6. Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Always use a <a href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/adjsn\/sql-json-path-expression-item-methods.html#GUID-8656CAB9-C293-4A99-BB62-F38F3CFC4C13__TABLE_U23_R3C_DSB\">SQL\/JSON path expression method<\/a> (<code>binary()<\/code>, <code>boolean()<\/code>, <code>date()<\/code>, <code>dateWithTime()<\/code>, <code>number()<\/code>, <code>string()<\/code>, &#8230;) when comparing a JSON value to a non-JSON value in SQL. This way you avoid implicit type conversions, improve the readability of your code, and give the Oracle Database everything it needs to create an optimal execution plan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Before comparing two values, the Oracle Database automatically ensures that both values have the same data type. It converts one of the values to match the data type of the other value. The SQL Language Reference manual describes when and how implicit data conversions happen. However, Oracle recommends that you convert<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":1,"featured_media":13817,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[140,85],"class_list":["post-13804","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-oracle-26ai","tag-sql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Avoid Implicit Type Conversion in JSON Access - Philipp Salvisberg&#039;s Blog<\/title>\n<meta name=\"description\" content=\"Discover why explicit JSON value conversion in SQL is essential for best performance and how to apply it in your code.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Avoid Implicit Type Conversion in JSON Access - Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"Discover why explicit JSON value conversion in SQL is essential for best performance and how to apply it in your code.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/\" \/>\n<meta property=\"og:site_name\" content=\"Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-28T16:38:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-01-28T16:39:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/01\/avoid-implicit-type-conversion-in-json-access.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Philipp Salvisberg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:site\" content=\"@phsalvisberg\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Philipp Salvisberg\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/\"},\"author\":{\"name\":\"Philipp Salvisberg\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"headline\":\"Avoid Implicit Type Conversion in JSON Access\",\"datePublished\":\"2025-01-28T16:38:55+00:00\",\"dateModified\":\"2025-01-28T16:39:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/\"},\"wordCount\":705,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/avoid-implicit-type-conversion-in-json-access.webp\",\"keywords\":[\"Oracle 26ai\",\"SQL\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/\",\"name\":\"Avoid Implicit Type Conversion in JSON Access - Philipp Salvisberg&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/avoid-implicit-type-conversion-in-json-access.webp\",\"datePublished\":\"2025-01-28T16:38:55+00:00\",\"dateModified\":\"2025-01-28T16:39:04+00:00\",\"description\":\"Discover why explicit JSON value conversion in SQL is essential for best performance and how to apply it in your code.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/avoid-implicit-type-conversion-in-json-access.webp\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/avoid-implicit-type-conversion-in-json-access.webp\",\"width\":1024,\"height\":1024,\"caption\":\"Avoid Implicit Type Conversion in JSON Access\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2025\\\/01\\\/28\\\/avoid-implicit-type-conversion-in-json-access\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Avoid Implicit Type Conversion in JSON Access\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\",\"name\":\"Philipp Salvisberg&#039;s Blog\",\"description\":\"Database-centric development\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\",\"name\":\"Philipp Salvisberg\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\",\"width\":400,\"height\":400,\"caption\":\"Philipp Salvisberg\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/phs_trivadis4.jpg\"},\"sameAs\":[\"http:\\\/\\\/www.salvis.com\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Avoid Implicit Type Conversion in JSON Access - Philipp Salvisberg&#039;s Blog","description":"Discover why explicit JSON value conversion in SQL is essential for best performance and how to apply it in your code.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/","og_locale":"en_US","og_type":"article","og_title":"Avoid Implicit Type Conversion in JSON Access - Philipp Salvisberg&#039;s Blog","og_description":"Discover why explicit JSON value conversion in SQL is essential for best performance and how to apply it in your code.","og_url":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/","og_site_name":"Philipp Salvisberg&#039;s Blog","article_published_time":"2025-01-28T16:38:55+00:00","article_modified_time":"2025-01-28T16:39:04+00:00","og_image":[{"width":1024,"height":1024,"url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/01\/avoid-implicit-type-conversion-in-json-access.webp","type":"image\/webp"}],"author":"Philipp Salvisberg","twitter_card":"summary_large_image","twitter_creator":"@phsalvisberg","twitter_site":"@phsalvisberg","twitter_misc":{"Written by":"Philipp Salvisberg","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#article","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/"},"author":{"name":"Philipp Salvisberg","@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"headline":"Avoid Implicit Type Conversion in JSON Access","datePublished":"2025-01-28T16:38:55+00:00","dateModified":"2025-01-28T16:39:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/"},"wordCount":705,"commentCount":0,"publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/01\/avoid-implicit-type-conversion-in-json-access.webp","keywords":["Oracle 26ai","SQL"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/","url":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/","name":"Avoid Implicit Type Conversion in JSON Access - Philipp Salvisberg&#039;s Blog","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#primaryimage"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/01\/avoid-implicit-type-conversion-in-json-access.webp","datePublished":"2025-01-28T16:38:55+00:00","dateModified":"2025-01-28T16:39:04+00:00","description":"Discover why explicit JSON value conversion in SQL is essential for best performance and how to apply it in your code.","breadcrumb":{"@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#primaryimage","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/01\/avoid-implicit-type-conversion-in-json-access.webp","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2025\/01\/avoid-implicit-type-conversion-in-json-access.webp","width":1024,"height":1024,"caption":"Avoid Implicit Type Conversion in JSON Access"},{"@type":"BreadcrumbList","@id":"https:\/\/www.salvis.com\/blog\/2025\/01\/28\/avoid-implicit-type-conversion-in-json-access\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.salvis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Avoid Implicit Type Conversion in JSON Access"}]},{"@type":"WebSite","@id":"https:\/\/www.salvis.com\/blog\/#website","url":"https:\/\/www.salvis.com\/blog\/","name":"Philipp Salvisberg&#039;s Blog","description":"Database-centric development","publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.salvis.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515","name":"Philipp Salvisberg","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg","width":400,"height":400,"caption":"Philipp Salvisberg"},"logo":{"@id":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2010\/11\/phs_trivadis4.jpg"},"sameAs":["http:\/\/www.salvis.com\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13804","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/comments?post=13804"}],"version-history":[{"count":19,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13804\/revisions"}],"predecessor-version":[{"id":13824,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/13804\/revisions\/13824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media\/13817"}],"wp:attachment":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media?parent=13804"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/categories?post=13804"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/tags?post=13804"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}