1 of 74

How to play and learn �Oracle APEX for free*

*fine print actually includes bonus stuff

Scott Wesley

Modis

Perth, Western Australia

@swesley_perth

grassroots-oracle.com

2 of 74

3 of 74

2014

2020

19c

Kscope15

Hollywood FL

Kscope19

Seattle WA

Age of productivity

2015 Book

2019 AOP

APEX 5.x

19.2, 20.1, …

Scott Wesley – A Career Timeline

2000

8i

7 years hard time

2007

1st Presentation

2008

A great transition

2010 Twitter

@swesley_perth

2012

Video Course

2009 Started Blog

grassroots-oracle.com

2008

Started with Sage

APEX 3.1

2023

Kscope20

Boston MA

#WFH

4 of 74

First presentation in …

5 of 74

ChatGTP Presentation

6 of 74

Agenda

How does it work?

Why is it good?

How can I learn?

Environment options

Ways to practice

Demo?

7 of 74

What is

Oracle APEX

8 of 74

Elevator Pitch

Oracle APEX is a fast way to develop interactive, data-centric web-based applications for the business.

9 of 74

On a longer ride

  • fast prototyping
  • built in search options
  • responsive layout
  • web services
  • interactive charts
  • transactional emailing
  • secure, auth options
  • database driven
  • community support

https://www.frasit.dk/apex-explained-to-managers/

10 of 74

  • Master detail forms
  • Application blueprints
  • Sophisticated LOVs
  • Built-in AOP integration
  • Faceted Search
  • Quick SQL
  • Drag/drop data loading
  • Email templates
  • Interactive Grids
  • Calendars
  • Application advisor

11 of 74

ChatGPT Elevator

12 of 74

Why is it good?

  1. Fast development
  2. Great for mocking up ideas & workflow concepts
  3. Interactive applications
  4. Modern technology - any device
  5. Great community

PL/SQL Driven

13 of 74

What I really like as a developer

  1. Quick & easy to do all the basics

  • Dynamic actions to add nifty UX to pages

  • Get a lot out of common patterns

SQL + PL/SQL

No JavaScript

*

14 of 74

Architecture

example.com/pls/apex/f?p=200

MyDB

Tomcat

/ WLS

Feature

15 of 74

~ Magic ~

Component templates

select *

from emp

+

=

Component properties

16 of 74

Oracle APEX Collateral

apex.oracle.com

/bookmarks

17 of 74

apex.oracle.com/en/learn/videos/

18 of 74

Community

19 of 74

apex.world/ords/f?p=100

One.

Stop.

Shop.

#orclAPEX

20 of 74

forums.oracle.com/ords/apexds/domain/dev-community/category/apex

top 3 forum

21 of 74

AskTom.oracle.com/pls/apex/f?p=100

22 of 74

AskTom Office Hours

123+ recordings

23 of 74

Community+

  • Presentations
    • ODTUG (Kscope)
  • Bloggers
    • (apex.world)
  • Plugins
    • Free + Supported
      • https://fos.world/ords/f?p=10000
      • https://www.plug-ins-pro.com/ords/uc/r/plug-ins-pro/home
  • Dev Gym
    • Quizzes
      • devgym.oracle.com/pls/apex/f?p=10001

24 of 74

Community+

https://github.com/Dani3lSun/awesome-orclapex

25 of 74

Environment Options

26 of 74

apex.oracle.com

27 of 74

Oracle APEX Hosting

28 of 74

Oracle Cloud Offering

  • 2 DB with 1 OCPU + 20 GB Storage
  • 200 GB total storage
  • 10 GB Object storage
  • 10 GB Object storage - infrequent access
  • 10 GB Archive storage
  • 2 VMs 1GB Memory
  • 5 OCI Bastions

https://www.slideshare.net/MichaelHichwa/apex-and-oracle-apex-oracle-autonomous-database-always-free-oracle-cloud-services

  • Autonomous Database
  • Oracle APEX
  • RESTful Services and SODA
  • SQL Developer Web
  • Oracle Machine Learning

29 of 74

but wait, there's more…

30 of 74

Oracle Cloud Offering

  • Observability
    • Monitoring
    • 500 million ingestion datapoints
    • 1 billion retrieval datapoints
    • Logging 10 GB per month
    • Notifications: 1 million via https, 1000 emails per month
  • Additional services
    • Load balancer 10 Mbps bandwidth
    • Outbound Data Transfer: 10 TB per month
    • VCN Flow Logs: 10 GB per month
    • Site to site VPN: 50 IPSec connections
    • Certificates: 5 Private CA and 150 private TLS certificates
    • Email: 100 per day

Always free services available for unlimited time

31 of 74

Trial = extra stuff

32 of 74

Forms Developers

- transform and roll out!

33 of 74

Spot the difference!

34 of 74

Beware of Decepticons

35 of 74

Ways to practice

36 of 74

Admin / Backend Application

  • Common Queries
    • Error Logs
    • Meta-data (ref codes)
    • Scheduled Jobs
  • Common Scripts
  • Smoke tests
    • Email
    • Web Services
  • Data Fixes
  • Data Validation

37 of 74

Side Project

  • Personal Finance
  • Community Project
  • Genealogy
  • Convert a Spreadsheet
  • Friend's Business
  • Million dollar app $$

38 of 74

Replicate Samples

  • Charts
  • Data Loading
  • Dynamic Actions
  • Collections
  • File upload

/ download

  • Maps
  • Reporting

https://github.com/oracle/apex/tree/22.2/sample-apps

39 of 74

Convert Forms

  • Common Symptoms
    • UX Workflow - changes
    • Business rules - aged
    • Form/Page needs - reviewed
    • Hardware Specs
    • Licensing fees
    • Reporting behaviour - live data
    • User engagement - increases
    • PDFs - $$

40 of 74

** not available on Switch

41 of 74

Can we squeeze in a demo?

42 of 74

Final Destination

43 of 74

Application Builder

apex.oracle.com/ords/f?p=4000:1500:11556571924376

44 of 74

Page List

45 of 74

New Page

46 of 74

New Page �- details

47 of 74

New Page�- menu

48 of 74

Page �Builder�- created

49 of 74

Right-click�- Add region

50 of 74

Define �query

51 of 74

Right click�- add item�- add button

52 of 74

Create�Dynamic�Action�(press button)

53 of 74

Add action�- execute pl/sql

Dynamic Action = JavaScript you don't see

54 of 74

Define �PL/SQL, �items to �submit

55 of 74

Save �changes

56 of 74

APEX Source /Meta-data

Pages

Applications

Regions

Items

57 of 74

58 of 74

Runtime �- ready

59 of 74

Runtime �- broken

60 of 74

Show debug list

61 of 74

View page debug

62 of 74

Add process �on page load

63 of 74

Validate�PL/SQL

64 of 74

Validate �SQL

65 of 74

Runtime�- Success

66 of 74

Attribute �changes

67 of 74

Attribute�changes�(only clicks)

68 of 74

Bonus!

$('#my_region').find('.nodatafound').length == 1

Does this region…

Contain this class

select count(*)

from html

where id = 'my_region'

and class = 'nodatafound'

69 of 74

Collection report region

70 of 74

Hide when no data found

71 of 74

Supporting Code

-- Initialise collection (create parent record)

apex_collection.create_or_truncate_collection('APEX101');

-- Add collection record (child)

APEX_COLLECTION.ADD_MEMBER (

p_collection_name => 'APEX101'

,p_c001 => :p15_value -- value from page

);

-- Query collection data

select seq_id, c001

from apex_collections

where collection_name = 'APEX101'

-- Check for results (tidier/faster than SQL solution)

$('#my_region').find('.nodatafound').length == 1

72 of 74

Dark Mode

apex.oracle.com/ords/f?p=4000:4500:11556571924376

73 of 74

74 of 74

Question

https://apex.world

Answer

Scott Wesley

Modis

Perth, Western Australia

@swesley_perth

grassroots-oracle.com