{"id":11658,"date":"2022-09-25T13:18:27","date_gmt":"2022-09-25T11:18:27","guid":{"rendered":"https:\/\/www.salvis.com\/blog\/?p=11658"},"modified":"2023-11-08T17:01:59","modified_gmt":"2023-11-08T16:01:59","slug":"doag2022-highlights","status":"publish","type":"post","link":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/","title":{"rendered":"DOAG2022 Highlights"},"content":{"rendered":"\n<p>Nobody knows what kind of restrictions we will experience later this year. That&#8217;s why the DOAG Conference + Exhibition 2022 took place in September instead of November. The organizers wanted an in-person event. While you can <a href=\"https:\/\/en.shop.doag.org\/shop\/prd.404.doag-2022-conference-exhibition-on-demand\/\">access some chosen content remotely<\/a> an in-person event has a lot of advantages, like getting in touch with speakers and attendees. I enjoyed it very much. Many thanks to DOAG and all the people behind the scenes who made this possible.<\/p>\n\n\n\n<p>In this blog post, I summarize some of my personal highlights in chronological order.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Day 1 &#8211; Theme Day<\/h2>\n\n\n\n<p>The very first day of the conference was a theme day. Themes were<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PL\/SQL &amp; APEX<\/li>\n\n\n\n<li>Oracle Forms<\/li>\n\n\n\n<li>Automation<\/li>\n\n\n\n<li>Ransomware<\/li>\n\n\n\n<li>Database Migrations<\/li>\n\n\n\n<li>Multitenant Architecture<\/li>\n\n\n\n<li>PostgreSQL<\/li>\n\n\n\n<li>Autonomous Database for DevOps<\/li>\n\n\n\n<li>Softskills<\/li>\n<\/ul>\n\n\n\n<p>Most of the themes were organized as mini-conferences with sessions you could join. Others were more like workshops with lightning talks as introductions. And there was the opportunity to book some 1:1 time slots with developer experts for questions regarding Oracle database, performance, JSON, XML, blockchain, frontend testing, JavaScript, NodeJS, cloud, containers, microservices, mobile UI, PWA, low code, SSO, APEX good practices, APEX API, APEX plugins, REST, spatial and more.<\/p>\n\n\n\n<p>AFAIK all sessions were in German on this day. Participants and speakers without knowledge of German probably felt a bit lost and took the opportunity to talk over a drink or a meal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">PostgreSQL Features Oracle People Will Like<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c.jpeg\" alt=\"\" class=\"wp-image-11664\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c.jpeg 1024w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c-300x225.jpeg 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c-768x577.jpeg 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c-194x146.jpeg 194w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c-50x38.jpeg 50w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c-100x75.jpeg 100w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7D87F5B6-5AB2-451F-A2C9-08E6A1E26E3B_1_105_c-1x1.jpeg 1w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>A highlight of this day was the talk by <a href=\"https:\/\/twitter.com\/postgresql_007\">Hans-J\u00fcrgen Sch\u00f6nig<\/a>. He is Austrian, a Viennese to be exact. I can imagine him as a stand-up comedian. Rarely have I laughed so hard at a technical presentation. He presented some features where PostgreSQL shines and the Oracle database does not look so good. The intention was clear. He wanted to make Oracle database fans jealous. If you have the chance to see Hans-J\u00fcrgen live, don&#8217;t miss it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Day 2 and 3 &#8211; The Conference<\/h2>\n\n\n\n<p>The second day was the start of the real conference. 20 parallel streams with 4 to 6 English talks per time slot. The first session was at 08:00 and the last one at 17:00. A 15-minute break between the 45-minute sessions. There were for sure more attendees than at the theme day, but fewer than in 2019 &#8211; the last in-person DOAG conference. And some exhibitors were missing. It hurts to see Robotron at the spot where the Trivadis booth was the previous years. Let&#8217;s hope for more exhibitors next year.<\/p>\n\n\n\n<p>These are my highlights of the main conference.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Design Patterns in PL\/SQL &amp; SQL<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c.jpeg\" alt=\"\" class=\"wp-image-11665\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c.jpeg 1024w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c-300x225.jpeg 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c-768x577.jpeg 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c-194x146.jpeg 194w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c-50x38.jpeg 50w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c-100x75.jpeg 100w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/07B8AA14-BE0A-42C0-AB0F-A15D9D6B38D3_1_105_c-1x1.jpeg 1w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"https:\/\/twitter.com\/DBoriented\">Oren Nakdimon<\/a> had the bad luck to get the 08:00 slot. However, I was lucky to meet him on the bus to the conference center. He convinced me to attend his session (of course he was already on the shortlist). He used a data model based on artists, genres, albums and songs for all examples and presented the following patterns:<\/p>\n\n\n\n<table id=\"tablepress-18\" class=\"tablepress tablepress-id-18\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\">Pattern<\/th><th class=\"column-2\">Generic Problem<\/th><th class=\"column-3\">Example<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Overlap check<\/td><td class=\"column-2\">Find rows that (partially or fully) overlap a given range.<\/td><td class=\"column-3\">Find all artists that were living between two dates.<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Extendable LOV<\/td><td class=\"column-2\">Look-up a reference table and add new values if not exist.<\/td><td class=\"column-3\">Get genre ID by its name. If it doesn&#8217;t exist, add it.<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Multi-value parameters<\/td><td class=\"column-2\">Pass multiple entities to procedures<\/td><td class=\"column-3\">Add an album with its songs.<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">The guardian trigger<\/td><td class=\"column-2\">Whenever some DML is done on some table T, another piece of code should be executed.<\/td><td class=\"column-3\">Enforce the rule: an album must have at least one song.<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Conditional uniqueness<\/td><td class=\"column-2\">Enforce a business rule that requires uniqueness of an attribute (column) within a subset of the entity instances (table rows).<\/td><td class=\"column-3\">Enforce the rule: each album may have at most one favourite song.<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Correlated results<\/td><td class=\"column-2\">Return correlated data based on various inputs.<\/td><td class=\"column-3\">Return albums \u2013 and all their songs \u2013 based on various inputs.<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Arc relationship<\/td><td class=\"column-2\">Implement an arc relationship from a generic entity.<\/td><td class=\"column-3\">Implement an arc relationship from images to artists and albums.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n\n<p>For each pattern, Oren explained the problem and built the suggested solution step by step. He considered also various corner cases.<\/p>\n\n\n\n<p>Have a look at his <a href=\"http:\/\/db-oriented.com\/presentations\/\">website<\/a> where you find the slides (search for &#8220;Design Patterns in PL\/SQL and SQL&#8221;). I&#8217;m sure that some of us have solved one or the other problem less elegantly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Oracle Analytics Server, Make It Right from the Beginning<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c.jpeg\" alt=\"\" class=\"wp-image-11669\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c.jpeg 1024w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c-300x225.jpeg 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c-768x577.jpeg 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c-194x146.jpeg 194w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c-50x38.jpeg 50w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c-100x75.jpeg 100w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D88C89D3-6222-47E2-9D04-0A2F865210D4_1_105_c-1x1.jpeg 1w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"https:\/\/twitter.com\/G_Ceresa\">Gianni Ceresa<\/a>&#8216;s talk was about installing the Oracle Analytics Server the right way. However, a lot of his talk was independent of the product. Simply put it was about reading the documentation, automation and testing. &#8220;Script as much as you can&#8221; was one of Gianni&#8217;s messages. There was also an interesting side story about how a cloud provider can mess up provisioning its own product. See <a href=\"https:\/\/gianniceresa.com\/2021\/12\/oracle-analytics-server-on-marketplace-yes-but-no\/\">this blog post<\/a> to learn more.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Future of the Oracle Database<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c.jpeg\" alt=\"\" class=\"wp-image-11672\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c.jpeg 1024w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c-300x225.jpeg 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c-768x577.jpeg 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c-194x146.jpeg 194w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c-50x38.jpeg 50w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c-100x75.jpeg 100w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/D5DFA022-DB6A-4FAA-8F0A-E5B804763DEB_1_105_c-1x1.jpeg 1w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>The Oracle Database version 23c is the next long-term release. The release is expected in April 2023. The beta program will start in October and end in February 2023.\u00a0 <a href=\"https:\/\/twitter.com\/GeraldVenzl\">Gerald Venzl<\/a> revealed in this session some new features. He presented the following features with some examples:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Schema Level Privileges<\/li>\n\n\n\n<li>SQL Domains<\/li>\n\n\n\n<li>4096 Columns<\/li>\n\n\n\n<li>JSON Schema<\/li>\n\n\n\n<li>Boolean Data Type<\/li>\n\n\n\n<li>UPDATE via JOIN<\/li>\n\n\n\n<li>JavaScript Stored Procedures<\/li>\n\n\n\n<li>IF [NOT] EXISTS<\/li>\n\n\n\n<li>GROUP BY Alias \/ Column Position<\/li>\n\n\n\n<li>Table Value Constructor<\/li>\n\n\n\n<li>Better RETURNING CLAUSE<\/li>\n\n\n\n<li>Developer Role<\/li>\n\n\n\n<li>SELECT without FROM<\/li>\n\n\n\n<li>Annotations<\/li>\n\n\n\n<li>Much Better Error Messages<\/li>\n<\/ul>\n\n\n\n<p>See this <a href=\"https:\/\/twitter.com\/phsalvisberg\/status\/1572885995070300160?s=20&amp;t=d9H6PPPf7q5DMO9Onwmm2Q\">Twitter thread<\/a> for some pictures per feature. More details will probably be available after CloudWorld. I&#8217;m really looking forward to getting access to this release.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TAPI vs. XAPI<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c.jpeg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"769\" src=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c.jpeg\" alt=\"\" class=\"wp-image-11674\" srcset=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c.jpeg 1024w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c-300x225.jpeg 300w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c-768x577.jpeg 768w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c-194x146.jpeg 194w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c-50x38.jpeg 50w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c-100x75.jpeg 100w, https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/7B453E63-DA77-4594-AA99-77894EE2140F_1_105_c-1x1.jpeg 1w\" sizes=\"auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.linkedin.com\/in\/j%C3%BCrgen-sieben-36b817\/\">J\u00fcrgen Sieben<\/a>\u00a0explained based on a simple example the problems of accessing tables directly and using row-level triggers to apply business logic. He improved the situation by using a table API. The main disadvantage of a table API is, that it exposes the implementation such as the structure and the column names. A solution is to use a view layer for read-only access and a transaction API for write access. The table API can still be used, but only internally by the transaction API itself. Finally, J\u00fcrgen explains that a CRUD-based API is a technical interface that obscures the intention. To cancel an order you could delete the order with its positions. But most probably you would want to store the reason for the cancellation and change the state of the order. So, a transactional API should be designed from a business perspective.<\/p>\n\n\n\n<p>I liked this talk very much. Not only because I totally agree with J\u00fcrgen, but also because I like the way how he explains things in a concise and easy-to-follow way.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>I enjoyed this conference very much. Thanks to everyone who helped make this conference happen. I&#8217;m already looking forward to DOAG2023.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nobody knows what kind of restrictions we will experience later this year. That&#8217;s why the DOAG Conference + Exhibition 2022 took place in September instead of November. The organizers wanted an in-person event. While you can access some chosen content remotely an in-person event has a lot of advantages, like getting in<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":1,"featured_media":11679,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[109,13,85],"class_list":["post-11658","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","tag-pinkdb","tag-plsql","tag-sql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DOAG2022 Highlights - Philipp Salvisberg&#039;s Blog<\/title>\n<meta name=\"description\" content=\"Personal highlights of the DOAG Conference + Exhibition 2022. Design Patterns in PL\/SQL &amp; SQL, Oracle Database 23c, TAPI vs. XAPI\" \/>\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\/2022\/09\/25\/doag2022-highlights\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DOAG2022 Highlights - Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"og:description\" content=\"Personal highlights of the DOAG Conference + Exhibition 2022. Design Patterns in PL\/SQL &amp; SQL, Oracle Database 23c, TAPI vs. XAPI\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/\" \/>\n<meta property=\"og:site_name\" content=\"Philipp Salvisberg&#039;s Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-25T11:18:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-08T16:01:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/\"},\"author\":{\"name\":\"Philipp Salvisberg\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"headline\":\"DOAG2022 Highlights\",\"datePublished\":\"2022-09-25T11:18:27+00:00\",\"dateModified\":\"2023-11-08T16:01:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/\"},\"wordCount\":945,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#\\\/schema\\\/person\\\/34352245c48678b1a5a05d4bc1339515\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg\",\"keywords\":[\"PinkDB\",\"PL\\\/SQL\",\"SQL\"],\"articleSection\":[\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/\",\"name\":\"DOAG2022 Highlights - Philipp Salvisberg&#039;s Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg\",\"datePublished\":\"2022-09-25T11:18:27+00:00\",\"dateModified\":\"2023-11-08T16:01:59+00:00\",\"description\":\"Personal highlights of the DOAG Conference + Exhibition 2022. Design Patterns in PL\\\/SQL & SQL, Oracle Database 23c, TAPI vs. XAPI\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg\",\"contentUrl\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/09\\\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"DOAG2022 - The Oracle User Conference\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/2022\\\/09\\\/25\\\/doag2022-highlights\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.salvis.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DOAG2022 Highlights\"}]},{\"@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":"DOAG2022 Highlights - Philipp Salvisberg&#039;s Blog","description":"Personal highlights of the DOAG Conference + Exhibition 2022. Design Patterns in PL\/SQL & SQL, Oracle Database 23c, TAPI vs. XAPI","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\/2022\/09\/25\/doag2022-highlights\/","og_locale":"en_US","og_type":"article","og_title":"DOAG2022 Highlights - Philipp Salvisberg&#039;s Blog","og_description":"Personal highlights of the DOAG Conference + Exhibition 2022. Design Patterns in PL\/SQL & SQL, Oracle Database 23c, TAPI vs. XAPI","og_url":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/","og_site_name":"Philipp Salvisberg&#039;s Blog","article_published_time":"2022-09-25T11:18:27+00:00","article_modified_time":"2023-11-08T16:01:59+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg","type":"image\/jpeg"}],"author":"Philipp Salvisberg","twitter_card":"summary_large_image","twitter_creator":"@phsalvisberg","twitter_site":"@phsalvisberg","twitter_misc":{"Written by":"Philipp Salvisberg","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#article","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/"},"author":{"name":"Philipp Salvisberg","@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"headline":"DOAG2022 Highlights","datePublished":"2022-09-25T11:18:27+00:00","dateModified":"2023-11-08T16:01:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/"},"wordCount":945,"commentCount":0,"publisher":{"@id":"https:\/\/www.salvis.com\/blog\/#\/schema\/person\/34352245c48678b1a5a05d4bc1339515"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg","keywords":["PinkDB","PL\/SQL","SQL"],"articleSection":["Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/","url":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/","name":"DOAG2022 Highlights - Philipp Salvisberg&#039;s Blog","isPartOf":{"@id":"https:\/\/www.salvis.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#primaryimage"},"image":{"@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#primaryimage"},"thumbnailUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg","datePublished":"2022-09-25T11:18:27+00:00","dateModified":"2023-11-08T16:01:59+00:00","description":"Personal highlights of the DOAG Conference + Exhibition 2022. Design Patterns in PL\/SQL & SQL, Oracle Database 23c, TAPI vs. XAPI","breadcrumb":{"@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#primaryimage","url":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg","contentUrl":"https:\/\/www.salvis.com\/blog\/wp-content\/uploads\/2022\/09\/DOAG_K_A-2022-Banner-1920x1080-EN.jpg","width":1920,"height":1080,"caption":"DOAG2022 - The Oracle User Conference"},{"@type":"BreadcrumbList","@id":"https:\/\/www.salvis.com\/blog\/2022\/09\/25\/doag2022-highlights\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.salvis.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DOAG2022 Highlights"}]},{"@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\/11658","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=11658"}],"version-history":[{"count":19,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/11658\/revisions"}],"predecessor-version":[{"id":12724,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/posts\/11658\/revisions\/12724"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media\/11679"}],"wp:attachment":[{"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/media?parent=11658"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/categories?post=11658"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.salvis.com\/blog\/wp-json\/wp\/v2\/tags?post=11658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}