12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle...
Transcript of 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle...
![Page 1: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/1.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
12 Things Developers Will Love About Oracle Database 12c Release 2
Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL
![Page 2: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/2.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
![Page 3: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/3.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
![Page 4: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/4.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
![Page 5: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/5.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
"There are only two hard things in Computer Science: cache invalidation and naming things."
– Phil Karlton
![Page 6: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/6.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
alter table customer_addresses add constraint
customer_addresses_customer_id_fk
foreign key ( customer_id )
references customers ( customer_id );
SQL Error: ORA-00972: identifier is too long
<table_name>_<column_name>_fk
![Page 7: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/7.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
![Page 8: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/8.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
![Page 9: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/9.jpg)
Looooooooong names
![Page 10: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/10.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
128 bytes
![Page 11: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/11.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create table
with_a_really_really_really_really_really_long_name
(
and_lots_and_lots_and_lots_and_lots int,
of_really_really_really_really_really_long_cols int
);
![Page 12: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/12.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create or replace procedure process_tab
is
tab varchar2(30);
begin
select table_name
into tab
from user_tables
where ...
![Page 13: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/13.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
exec proccess_tab;
ORA-06502: PL/SQL: numeric or value
error: character string buffer too
small
![Page 14: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/14.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. | Ryan McGuire / Gratisography
![Page 15: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/15.jpg)
<expressions> in place of 'literals'
![Page 16: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/16.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
declare
v1 varchar2 ( 30 );
var_length constant pls_integer := 30;
v2 varchar2( var_length );
begin Must know at compile time
SQL User functions Constants
![Page 17: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/17.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create or replace procedure process_tab is
$if DBMS_DB_VERSION.VER_LE_12_1 $then
tab varchar2( 30 );
$else
tab varchar2( ora_max_name_len );
$end
begin
Only one is compiled
12.1
12.2+
![Page 18: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/18.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
user_tables.table_name%type
![Page 19: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/19.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select table_name,
listagg(index_name, ',') within group
(order by index_name) inds
from user_indexes
group by table_name; 4,000* byte limit 130 indexes/tab 31
![Page 20: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/20.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
"Self documenting" indexes... create index
reducing_the_monthly_invoice_run_
from_four_hours_to_three_minutes_
PROJ12345_make_everything_faster_
csaxon_is_the_sql_tuning_master on
...
![Page 21: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/21.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select table_name,
listagg(index_name, ',') within group
(order by index_name) inds
from user_indexes
group by table_name;
ORA-01489: result of string concatenation is
too long
![Page 22: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/22.jpg)
listagg ( improved on overfloooooow )
![Page 23: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/23.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select table_name,
listagg(index_name, ','
on overflow truncate
) within group
(order by index_name) inds
from user_indexes
group by table_name;
...lots_and_lots,of_indexes,...(42)
![Page 24: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/24.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
listagg (
things, ','
[ on overflow (truncate|error) ]
[ text ] [ (with|without) count ]
) within group (order by cols)
![Page 25: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/25.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
First name
Last name
![Page 26: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/26.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select *
from people
where first_name = 'Chris'
and last_name = 'Saxon';
FIRST_NAME LAST_NAME
Chris Saxon
![Page 27: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/27.jpg)
Column level collation
![Page 28: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/28.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create table t (
case_and_accent_sensitive varchar2(10),
case_insensitive_accent_sensitive
varchar2(10) collate binary_ci,
case_and_accent_insensitive
varchar2(10) collate binary_ai
);
![Page 29: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/29.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
![Page 30: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/30.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
> >
![Page 31: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/31.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
alter table people default collation binary_ai;
ORA-43929: Collation cannot be specified if
parameter MAX_STRING_SIZE=STANDARD
Must be EXTENDED!
Existing columns unaffected!
![Page 32: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/32.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create or replace package customer_pkg as
/* get_customers_upper is deprecated. Do not use or
I'll come for you with a rusty spoon! */
cursor get_customers_upper (p_name varchar2) is
select * from customers
where upper(customer_name) = upper(p_name);
cursor get_customers (p_name varchar2) is
select * from customers
where customer_name = p_name;
![Page 33: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/33.jpg)
pragma deprecate ( your_old_code )
![Page 34: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/34.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create or replace package customer_pkg as
/* get_customers_upper is deprecated. Do not use or
I'll come for you with a rusty spoon */
cursor get_customers_upper (p_name varchar2) is
select * from customers
where upper(customer_name) = upper(p_name);
pragma deprecate(get_customers_upper,
'Use get_customers instead');
cursor get_customers (p_name varchar2) is
select * from customers
where customer_name = p_name;
![Page 35: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/35.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
alter system set plsql_warnings =
'enable:(6019,6020,6021,6022)';
![Page 36: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/36.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
SP2-0804: Procedure created with compilation warnings
LINE/COL ERROR
-------- -----------------------------------------------------------
1/1 PLW-05018: unit PROCESS_CUSTOMERS omitted optional AUTHID
clause; default value DEFINER used
4/29 PLW-06020: reference to a deprecated entity:
GET_CUSTOMERS_UPPER declared in unit CUSTOMER_PKG[2,10].
Use get_customers instead
7/9 PLW-06020: reference to a deprecated entity:
GET_CUSTOMERS_UPPER declared in unit CUSTOMER_PKG[2,10].
Use get_customers instead
8/9 PLW-06020: reference to a deprecated entity:
![Page 37: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/37.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Whatever
![Page 38: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/38.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
alter system set plsql_warnings =
'error:6020';
![Page 39: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/39.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Warning: Procedure altered with compilation errors.
LINE/COL ERROR
-------- --------------------------------------------------------
4/29 PLS-06020: reference to a deprecated entity:
GET_CUSTOMERS_UPPER declared in unit CUSTOMER_PKG[2,10].
Use get_customers instead
7/9 PLS-06020: reference to a deprecated entity:
GET_CUSTOMERS_UPPER declared in unit CUSTOMER_PKG[2,10].
Use get_customers instead
8/9 PLS-06020: reference to a deprecated entity:
GET_CUSTOMERS_UPPER declared in unit CUSTOMER_PKG[2,10].
Use get_customers instead
![Page 40: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/40.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
ext_tab
![Page 41: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/41.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select * from ext_tab;
ORA-29913: error in executing
ODCIEXTTABLEFETCH callout
ORA-30653: reject limit reached
![Page 42: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/42.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
alter table ext_tab
location ('test.csv')
reject limit unlimited;
ext_tab
![Page 43: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/43.jpg)
External Table Parameter Override
![Page 44: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/44.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select * from ext_tab external modify (
[ default directory ]
[ location ]
[ access parameters ]
[ reject limit ]
);
![Page 45: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/45.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select * from ext_tab external modify (
location ('test.csv')
reject limit unlimited
);
no rows selected
![Page 46: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/46.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
01-SEP-2016
02-SEP-2016
03-SEP-2016
04-SEP-2016
05-SEP-2016
06-SEP-2016
07-SEP-2016
08-SEP-2016
09-SEP-2016
10-SEP-2016
11-SEP-2016
2016/09/01
2016/09/02
2016/09/03
2016/09/04
2016/09/05
2016/09/06
2016/09/07
2016/09/08
2016/09/09
2016/09/10
2016/09/11
![Page 47: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/47.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create table ext_tab (
...
created_date date varchar2(20)
...
) organization external (
...
created_date char(20)
date_format date mask 'dd-MON-yyyy'
...
![Page 48: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/48.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select to_date(created_date, 'dd-mon-yyyy')
from ext_tab;
ORA-01843: not a valid month
![Page 49: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/49.jpg)
Validate conversions
![Page 50: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/50.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
validate_conversion (
<expression> as <data type>,
[ <format mask> ],
[ <nls_parameters> ]
) 1 = Success! 0 = Failure
Defaults to NLS settings!
![Page 51: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/51.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select to_date(created_date, 'dd-mon-yyyy')
from ext_tab
where validate_conversion (
created_date as date, 'dd-MON-yyyy'
) = 1;
![Page 52: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/52.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
insert into error_table
select created_date
from ext_tab
where validate_conversion (
created_date as date, 'dd-MON-yyyy'
) = 0;
![Page 53: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/53.jpg)
cast ( default on error )
![Page 54: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/54.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
cast (
<expression> as <data type>
[ default <value> on conversion error ],
[ <format mask> ],
[ <nls_parameters> ]
)
to_date() to_number() to_timestamp() etc.
Also...
this... ...must match this
![Page 55: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/55.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select to_date(
created_date
default '01-JAN-0001'
on conversion error,
'dd-mon-yyyy'
)
from ext_tab;
01-JAN-0001
![Page 56: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/56.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create table file_imports (
file_type varchar2(30),
file_data clob )
partition by list (file_type) (
partition p_fixed values ('FIXED'),
partition p_csv values ('CSV')
);
insert into file_imports values ('XML',
'<?xml version="1.0" encoding="UTF-8"?> ...');
SQL Error: ORA-14400: inserted partition key does not
map to any partition
![Page 57: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/57.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
alter table file_imports add partition
p_xml values ('XML');
alter table file_imports add partition
p_default values (default);
![Page 58: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/58.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
p_fixed p_csv
p_XML p_default
FIXED FIXED FIXED CSV CSV CSV
XML YAML XML XML JSON HTML
![Page 59: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/59.jpg)
Automatic List Part ition ing
![Page 60: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/60.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
create table file_imports (
file_type varchar2(30),
file_data clob )
partition by list (file_type) automatic (
partition p_fixed values ('FIXED'),
partition p_csv values ('CSV'),
partition p_XML values ('XML'),
partition p_JSON values ('JSON'),
partition p_default values (default)
);
Mutually exclusive!
![Page 61: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/61.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
alter table file_imports split partition
p_default into (
partition p_json values ('JSON'),
partition p_yaml values ('YAML'),
partition p_default
);
alter table file_imports drop partition
p_default;
alter table file_imports
set partitioning automatic;
![Page 62: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/62.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
{
"department": "Accounting",
"employees": [
{
"name": "Shelley,Higgins",
"job": "Accounting Manager"
},
{
"name": "William,Gietz",
"job": "Public Accountant"
}
]
}
JSON in 12.1.0.2
check ( employees_json is json )
![Page 63: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/63.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
{
"department": "Accounting",
"employees": [
{
"name": "Shelley,Higgins",
"job": "Accounting Manager"
},
{
"name": "William,Gietz",
"job": "Public Accountant"
}
]
}
![Page 64: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/64.jpg)
{"newJSONFunctions": [ "json_array", "json_object", "json_arrayagg", "json_objectagg" ] }
![Page 65: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/65.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
json_array* => [ ] json_object* => { }
[ ... ] {...} [ ... ] {...} [ ... ] {...} [ ... ] {...} [ ... ] {...} [ ... ] {...} [ ... ] {...}
{ ... }
json_*agg => json_*(non-agg) =>
[ ... ]
![Page 66: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/66.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select json_object (
'department' value d.department_name,
'employees' value json_arrayagg (
json_object (
'name' value first_name || ',' || last_name,
'job' value job_title
)))
from hr.departments d, hr.employees e, hr.jobs j
where d.department_id = e.department_id
and e.job_id = j.job_id
and d.department_id = 110
group by d.department_name
![Page 67: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/67.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
json_exists
... and more JSON goodies
GeoJSON
JSON Partitioning
In-Memory support
JSON Data Guide
Materialized Views Search index
![Page 68: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/68.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Also in 12.1.0.2...
select count(distinct ...)
from my_super_massive_table;
![Page 69: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/69.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Give me your best estimate!
![Page 70: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/70.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select approx_count_distinct (...)
from my_super_massive_table;
faster & clse enogh
![Page 71: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/71.jpg)
select count(*)
from user_source
where upper(text)
like '%COUNT%DISTINCT%';
1,723
![Page 72: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/72.jpg)
Aprox. Quries Enhncmnts
![Page 73: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/73.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Huh? approx_for_aggregation
approx_for_percentile
count ( distinct ... ) approx_count_distinct ( ... )
alter session set approx_for_count_distinct = true;
![Page 74: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/74.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
approx_percentile (
<expression> [ deterministic ],
[ ('ERROR_RATE' | 'CONFIDENCE') ]
) within group ( order by <expr> )
Also approx_median
How certain are we?
Consistent; slower; numbers only
![Page 75: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/75.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
It's time to start testing!
...but have we tested everything?
![Page 76: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/76.jpg)
PL/SQL Code Coverage
![Page 77: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/77.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
begin
if this or that then
do_this();
else
do_that();
end if;
end;
![Page 78: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/78.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
begin
dbms_plsql_code_coverage.create_coverage_tables;
end;
![Page 79: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/79.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
declare
run_id pls_integer;
begin
run_id :=
dbms_plsql_code_coverage.start_coverage('TEST1');
your_test_procedures;
dbms_plsql_code_coverage.stop_coverage;
end;
/
![Page 80: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/80.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select u.owner, u.name, u.type,
round((sum(b.covered)*100)/count(*))
as pct_covered
from dbmspcc_runs r
join dbmspcc_units u
on r.run_id = u.run_id
join dbmspcc_blocks b
on b.object_id = u.object_id
and b.run_id = u.run_id
where r.run_comment = 'TEST1'
group by u.owner, u.name, u.type
![Page 81: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/81.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
![Page 82: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/82.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
select u.owner, u.name, u.type,
round((sum(b.covered)*100)/count(*))
as pct_covered
from dbmspcc_runs r
join dbmspcc_units u
on r.run_id = u.run_id
join dbmspcc_blocks b
on b.object_id = u.object_id
and b.run_id = u.run_id
where r.run_comment = 'TEST1' and not_feasible = 0
group by u.owner, u.name, u.type
![Page 83: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/83.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
devgym.oracle.com/devgym/ database-for-developers.html
#MakeDataGreatAgain Ryan McGuire / Gratisography
![Page 84: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/84.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
Safe Harbor Statement
The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle.
![Page 85: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/85.jpg)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved. |
![Page 86: 12 Things Developers Will Love About Oracle Database … Database 12c Release 2 Chris Saxon Oracle Developer Advocate for SQL blogs.oracle.com/sql @chrisrsaxon & @SQLDaily youtube.com/c/TheMagicOfSQL](https://reader034.fdocuments.net/reader034/viewer/2022051601/5ad2c01a7f8b9a665f8cc3fa/html5/thumbnails/86.jpg)