It’s fun to watch developers get into heated arguments over VI versus Emacs or what the best dark mode theme is in VS Code, but in database land there’s been a simmering debate over what’s best between GUI apps and the SQL prompt.

Typing, mostly
Point, click, type…

You don’t have to pick one.

For the first time we’re now directly integrating the command line experience provided by SQLcl directly into SQL Developer, via our new VS Code Extension.

What does this mean?

1. No SQLcl install required

It’s included WITH the Extension. So if you want a ‘single install’ to be up and running for Oracle Database, our VS Code Extension could be the ticket.

You could also choose to have a separate install of SQLcl on your machine, so if you want to independently manage the version or not be tied to a VS Code environment, go for it.

2. Shared connections

SQLcl now has the ability to use pre-defined connections, where your passwords are safely stowed away in (sso) wallets.

Creating a connection in the SQL Developer extension or in SQLcl, said connection will be available to both applications.

For the moment, this trick can be used to import your connections from the old SQL Developer into the new one. We’ll make this an ‘automatic’ feature in the extension later this year.

3a. Use our SQL (and PLSQL) code editors, run in SQLcl

At any point you can take an existing Oracle connection and query (or script) you’re working on in your worksheet, and hand that off to a new, independent instance of SQLcl.

Once the terminal is established, you have a database connection going, ready for you to type and run away.

Our GUI is doing ‘extra’ work to help you. Maybe the insight/code completers are nice, but you want a more spartan experience – the CLI strips things down quite a bit for you.

3b. Or just spark up a CLI / terminal session as needed

You can simply right-click on the connection, and ask for an instance of SQLcl.

We’ll start-up SQLcl, create a connection, and…that’s it. It’s up to you to take it from there. And then also ‘kill it’ when you’re done.

Be sure to clean up after yourself.

4. We’ll re-use terminal sessions if we can

If you go to execute something from a SQL worksheet in SQLcl, and we already have a SQLcl session going, we’ll just use that, versus starting up a separate terminal process.

And as these terminal sessions are using independent connections from your worksheet – don’t forget to COMMIT;

Don’t ask me about AUTOCOMMIT, kay thanks bye.


Why are you currently shipping 23.3 of SQLcl vs 23.4

Technical challenges came up late in the game, and they’ll be sorted in March, with both 24.1 releases being in synch, so this is just a temporary anomaly.

Why no Liquibase?

See above answer, it’ll be sorted SOON.

Some of my connections aren’t working?

If you’re on Windows and you’re using connection names with non-ascii characters, you might see this error – “unknown connection…terminated with exit code: 1.”

We’ll have that issue sorted soon in an upcoming update. In the meantime, use a Mac, or avoid Unicode characters in your connection names if you’re on Windows.

What is SQLcl?

It’s our modern command line interface for the Oracle Database!

Everything you ever wanted to know about Oracle SQLcl: The Movie!

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.


  1. hi Jeff,
    Nice tool and good overview.

    It would be REALLY nice if there was a data pump import/export option to OCI that made the resulting object a single file instead of multiple files. That would make it easier to download the object in Windows as a single file for storage / use outside OCI. Download of an object with multiple segments into a single object only works in Linux.
    Plus, why split the file? Or at least, why not offer the option not to split it?

    • Data Pump features will definitely come to the VS Code GUI.

      SQLcl already has data pump support, we just need to update our command flags to surface the data pump back end/apis to manage the files vs file options.

      I can only build interfaces that do what the back end allows us to do, but if Data Pump supports it, we can give you the CLI/GUI to do that.

      Why split the file – because download a single 3TB file vs 30 100GB files might be problematic…but I’m not on the data pump team…

Write A Comment