Skip to main content

Command Palette

Search for a command to run...

From low code to vibe code

Creating a APEX application with zero code

Updated
6 min read
From low code to vibe code

Building an Oracle APEX application no longer needs in-depth knowledge of SQL and PL/SQL. With the new APEXlang workflow and an AI coding assistant, you can describe what you want in natural language and let the tools generate the database model and application for you. This article walks through a zero-code approach to set up an AI environment and use it to create and import an APEX application.

In this guide you will:

  • Install and prepare the required Oracle skills

  • Configure SQLcl as an MCP so the AI assistant can access your database.

  • Create a persistent instruction file (claude.md) that the assistant will use as context for every prompt (including MCP connection details).

  • Prompt the AI to generate a data model and then the APEX application, then import the generated app into your APEX workspace.

Prerequisites

In this blog, I'll use VS Code as the IDE and the Claude Code plugin as the AI agent. I also utilize a locally installed 26ai database with ORDS and APEX 26.1. Refer to my earlier blog for instructions on setting up this environment. All commands have been tested on macOS; if you're using a different system, please verify the commands accordingly.

Oracle skills

Most LLMs possess general coding knowledge but may lack the depth needed for building APEX applications. By incorporating specific skills into our project, we can enhance the LLM's understanding of Oracle application development. Oracle has recently uploaded various skills to GitHub, covering different topics. Today, I'll be using the db and apex skills. You can install them using npx, and they will be added to your .claude folder. The commands below will install them both.

npx skills add oracle/skills/apex
npx skills add oracle/skills/db

You'll be prompted to choose which agents to install and whether to install them globally or just for a specific project.

Configure SQLcl MCP server

  1. Download and unpack SQLcl. Get SQLcl from Oracle, unzip it, and add the SQLcl bin folder to your PATH. With where sql you can find the absolute path.

  2. Save the target DB connection in SQLcl. This saved connection can be used by claude to connect to the DB without the need of a password

SQL> conn -save sales -savepwd sales/password@localhost:1521/freepdb1
  1. Register SQLcl as an MCP for Claude Code (two options)
  • Option A — register via direct CLI command:
claude mcp add sqlcl -- /path/to/sql -mcp
  • Option B — register via JSON payload:
claude mcp add-json sqlcl '{"command": "/path/to/sqlcl/bin/sql", "args": ["-mcp"]}'
  1. Verify the MCP registration. Check the registered MCPs or use the Claude Code CLI to confirm sqlcl appears. Optionally run a simple query via the assistant (or test command) to ensure Claude Code can reach the database.

Once registered and verified, Claude Code can invoke the sqlcl MCP to execute queries, generate scripts, and interact with your database.

Configure claude.md

A CLAUDE.md file is your project's persistent instruction set for Claude Code. Without it, you end up re-explaining the same architectural decisions, coding standards, and team conventions at the start of every conversation. A CLAUDE.md file solves this by giving Claude persistent context that it automatically incorporates into every session. It's read at the start of every conversation and is the right place to document bash commands, code style preferences, and workflow rules. The easiest way to get started is to run /init inside Claude Code: this command scans your project and auto-generates a starter file.

In this file we will store the connection name for the SQLcl MCP server and we'll explain the apex and db skill to be used by claude.

Building the application

We're now set to build the application using prompts. In the first prompt we ask the AI to generate a data model.

Create a relational data model for a sales tracking application in Oracle Database with the following entities:
Customers — company name, contact person, email, phone, address, and status (prospect, active, inactive)
Products — name, description, category, unit price, and active flag
Opportunities — linked to a customer, with name, estimated value, expected close date, stage (new, qualified, proposal, negotiation, closed won, closed lost), and assigned sales rep
Sales / Orders — linked to an opportunity and customer, with order lines containing product, quantity, and agreed price
Also suggest any additional tables that would logically complement this data model, such as lookup tables, linking tables, or entities that are commonly part of a sales application.

The system generated nine core tables: sales_reps, customers, contacts, products, opportunities, opportunity_products, orders, order_lines, and activities, along with seven lookup tables. With the help of the MCP server, these tables are directly created in the sales schema as specified in claude.md.

With the data model present we can start prompting for the APEX application. I've started with a simple prompt where I want an application with 3 pages and simple login.

Build the apex application where i can login using an apex account. The home page should be a dashboard with sales and activities. The products and users should be maintainable with an interactive report and form.

At least I thought it was a simple task. Claude's first reaction was: This is a substantial build. Per CLAUDE.md the APEXLang skill drives this — I need to follow its start-order, probe the workspace, materialize a new app, then author .apx files. Setting up tracking and reading the skill assets in start order. To come up with the first version of the application it needed around 15 minutes and 40% of my 5 hour session limit. It created the .apx files but didn't import them into the database. I forgot the instructions on how to import the application back into the database. I've added the command to claude.md and asked to import the application

apex import -input /path/to/applications/sales

After I received the conformation: 🎉 Imported successfully — application ID 100 in workspace SALES. Verifying the pages landed. Now we can check to application in the APEX builder and run the application. The application was available in the builder. Starting the application showed a home page with to reports without columns.

In the prompt I've asked for a dashboard, but didn't receive one. A new prompt to better specify the home page should do the trick.

the home page has two reports without columns. I want a dashboard for the two table. Make a pie chart for the sales of the last 6 months and a bar chart for the recent activities.

Upon checking the application again, we now see a dashboard featuring a pie chart and a bar chart, just as I requested. We can proceed to review and modify the other pages as well, but since that would be repetitive, it's now your turn to take over.

Conclusion

With APEXlang, an AI coding assistant, and SQLcl as your MCP, you can go from idea to imported APEX app using plain English.