We’re announcing TODAY that our new Oracle SQL Developer Extension for VS Code is available !!! You can go into VS Code, and simply search for the ‘SQL Developer’ extension, or you can use the link below – click on the picture.
For the best possible experience, and to avoid conflicts, we recommend you deactivate extensions in the SQL domain before proceeding.
What is it?
It’s the future of SQL Developer. We’re taking the features you’ve been using in Oracle SQL Developer, and making them available in VS Code.
VS Code is the #1 development platform, and today we’re adding an extension for SQL Developer, delivering the #1 experience for Oracle Database students, professionals, and enthusiasts.
SQL Developer allows you define connections, browse databases, run SQL and SQL scripts, export data to popular formats, work with PL/SQL, and much more. That’s what this extension offers, in a nutshell.
We’ve tried to keep the ‘SQL Developer’ theme intact, write SQL, hit Ctrl-Enter to execute. Recall your previous SQL with Ctrl+UpArrow.
Open an object, see it’s structure, right click to add a column, click on the SQL page to get the DDL script. Check, check, and check.
Hopefully folks that have been using SQL Developer for years will find the transition to VS Code intuitive and painless as possible.
If you’re looking for a full list of features, then I invite you to explore the Extension page in the Maketplace. This post will cover some FAQs and include some additional feature demo via animated GIFs.
Why are we doing this?
Implementing modern features like Dark Mode called for a new platform that allowed delivering the best SQL and PL/SQL IDE, database administration, and reporting experience for the Oracle Database. VS Code gives us that platform, and has been adopted by the development community.
What’s version of Oracle Database are supported?
Oracle Database versions 11g to 23c, running on-premises, in a VM, container, cloud, etc. are all supported. Oracle Cloud Autonomous Serverless connections (using Cloud Wallets) are also supported.
What’s required to get started?
Only VS Code, there are no pre-requisites. Install the extension, then we take care of the rest. That means no need to install Java, .NET, and Oracle Client (instant or otherwise).
Installs & Updates
Everything will go through the VS Code Marketplace. When a new update is available, VS Code will sort it for you, automatically.
We plan on having MONTHLY updates, or more frequently as needed. As quickly as we can, we’ll be migrating your favorite features over to the VS Code extension.
Once we achieve feature parity, the old SQL Developer product will be deprecated. As of now, no new features will be added to SQL Developer (Classic).
New feature development will continue for SQLcl, SQL Developer Web, and the SQL Developer VS Code Extension.
Licensing & Support
The licensing is as good as it gets: Oracle Free Use Terms Conditions (FUTC) License.
Support is managed like our other Database Tools products: if you have an Oracle Database maintenance/support contract with Oracle Support, then you’re entitled to open Service Requests for the extension with My Oracle Support.
In addition, we have a community forum where users can share tips & tricks, ask questions, or share their feedback and suggestions.
Note we ship Oracle Java 21 in this extension, that’s also FREE for users.
What’s it do?
Let’s demonstrate a few things by way of animated GIFs.
Three ways to run your SQL
- Execute as SQL (get a Grid)
- Execute as a Script
- Open SQLcl, execute
The main difference between options 2 and 3 is in option 3 you get a new terminal instance of SQLcl, we create the connection for you, and run the contents of the worksheet. After that, its up to you if you want to keep the CLI terminal going or not…
Three ways to navigate your schema
- Use the tree
- Use the file breadcrumbs
- Open from a code editor
Code Completion & Formatting
Write some code, let our Extension complete the rest, and make it look pretty. Need to invoke a PL/SQL program? Ctrl+Spacebar is still your friend when it comes to code completion, although VS Code is VERY reliable for automatically making suggestions.
Or just writing some SQL?
Extension supports Dark Mode, and all the Themes
Just pull up the command palette and switch the theme to your liking.
When do we get feature X?
Many of you will be asking, are you planning on adding support for –
- developer REST APIs
- PL/SQL debugger
- importing connections from SQL Developer
- Reports
- the DBA panel
- Compare Schemas
- Session Monitor
- SQL Monitoring, ASH, AWR, ADDM
- Data Modeling
- super simple development with integrated Git and Liquibase
And my answer for all of these is, ‘Yes!’ I just can’t tell you when exactly. If you noticed, I’m not exactly accurate to predicting when we will be shipping software. Features will be prioritized based on user demand, and we’ll ship them on an aggressive timescale.
About shipping new products
While we’re calling this version 23.4, it’s really a version 1.0. As with any new product, we can’t ship it fast enough, and when we do ship it, it never has all the features you want it to. And there’s always that ‘last bug’ you want to get fixed first.
I welcome your feedback, and I want to say thanks in advance for all the support these last two decades and for the upcoming adventure in front of us!
85 Comments
It would be nice to have the export as INSERT option to ask for the table name where I want the data inserted into, like the Java version of SQL Developer
Agreed, it’s on the list.
I am using 24.2.1 of this extension and I like it. Do you happen to know when the ability to import Excel files, CSV files, or the like will be available in the extension?
When I taught a course using Oracle’s SQL Developer six years ago, students used this to bring in data for a final project. I have somewhat of a workaround now but this feature would really help.
I have an idea…it won’t be till Winter at least.
For the moment, you could use the LOAD command via SQLcl – it can create new tables from scratch via csv or it can map csv to an existing table.
Excel for both imports and exports has to be sorted as well.
Are you still teaching database courses, using Oracle Database? Would love to hear more how we could better serve you and your students.
I am teaching this fall a course on datambase management systems–the first half introduces database design using ERDs and then we get into teaching SQL. My college focuses on business so the students are not computer science students but take the course as part of a minor in computer information systems.
I don’t know what you can do to help–perhaps some ideas on available tools that wil, make SQL easier for them to “digest.”
LiveSQL for sure, no database to create, not tools to install
https://livesql.oracle.com/
How can I save a query result in a new tab like in SQL Developer?
That’s not supported, yet.
Will this extension be able to save a package spec and body to the same OS file?
Those are separate objects so we treat them, separately.
Is there something like Reports in VS Code Extenstion like in SQLDeveloper ?
How is it different from “Oracle Developer Tools for VS Code” ( https://docs.oracle.com/en/database/oracle/developer-tools-for-vscode/getting-started/gettingstarted.html#GUID-1A662ABF-42F4-4F25-AA13-C84163B50CB4 ) Will both extensions co-exist ?
One is from the SQL Developer team, will have all the SQL Developer, SQLcl, & Data Modeler features, and one is and will not.
Is it possible to login the Oracle SQL Developer Extension for VS Code by 2FA, e.g. RADIUS, thanks.
if it’s possible with the JDBC driver, then yes
however for 2FA, that’s just been delivered in the 23c version of the driver, which we’re not shipping (yet)
Is there a filter available on the tables or packages trees?
I’m using EBS so scrolling through the list is not practical
We’re working on it, coming soon!
In addition with my last comment, we have some legacy date fields in database were 0 is stored. And then when we try to query those fields in tables (ex: select * from mytablewith0indate), we can’t have the result. Is there an option to avoid this ?
What’s the actual date stored in the DATE column?
Hi Jeff,
Thanks for your reply !
Here is the date stored in columns that cause this issue :
“30/11/0002 00:00:00”
This is what we can see from “classic” sql developer.
And from sqlplus :
SQL> select saison_2_fin from bsp.GENERALITE
where CODE 2 _CLIENT=101866;
SAISON_2_F
———-
0000-00-00
Great extension ! It is really a great improvement.
In our case, we have 409 of Packages to display on one schema and we have this error displayed : “resultSet for PACKAGE is undefined”. I don’t know if it’s the number or a specific package that make this happened.
With others schemas with less packages on the database they are displayed.
We’ve fixed 2 different issues that might come into play here, one is where package retrieval isn’t working when the spec/body aren’t both around as expected, and another in general where we’re going to fetch 1,000 objects in the tree at a time.
Just installed. Also getting a “resultSet for PACKAGE is undefined” error attempting to expand the Packages tree item for a schema.
I’m accessing the Packages area for a subordinate schema through Other Users. 50 packages to render upon expansion. Similar to Sebastien’s feedback, the Packages area for other subordinate schemas expand without error. They’re considerably shorter package lists.
Happy to share any additional details that would help.
I’m really excited to see the direction you’re going in with SQL Developer!
So it’s just for one schema you can’t open packages for?
It seems to be the only one. I’m expanding the menu element for a number of system db user accounts as part of my testing today, among which are CTXSYS and SYS, which both load up with a very long list of package objects without issue.
Could the sizes of the package bodies have some bearing on the ability to render the list? Of the ~50 packages under this particular schema, many are legacy business-logic laden packages that have as many as 50+ procedures in them and can run in excess of 12k lines of code.
Maybe? You’ve given me some good info to go on, so stay tuned!
I also encounter this behaviour, an invalid package body without specification causes resultSet for PACKAGE is undefined, after drop this package body my packages are displayed again.
Great info here – can you confirm you’re on 23.4.1 or 23.4.0?
In my case im currently in 23.4.1
Ok, i’ve reproduced the issue/test case, and we should be able to KILL this bug with our next update, thanks Saul!
Hello Jeff,
1. Is the ability to compile PL/SQL to a schema (create procedure, package, etc) directly from a file?
2. Every worksheet opened is labeled ‘Untitled-#’. Is there a preference for worksheets to display the connection name or be renamed?
Thanks!
1. not yet, the ‘COMPILE’ interface is only there for opening objects straight out of the db – if you open your file now you could ‘compile’ by executing as a script
2. No – because once it’s named, we can’t change it. BUT you CAN change the connection on us, so I decided we would not default to the connection name as that could cause VERY BAD THINGS TO HAPPEN IN THE WRONG DATABASE.
Is there a schema browser yet or describe functionality? I saw Go To Declaration but bringing that up just shows synonyms and such that are associated to table. Having a list of triggers, indexes etc available is very helpful with a couple of keystrokes.
What synonym? For example, DBA_TABLES is a public synonym pointing to the view DBA_TABLES in SYS schema, I can nav to that object using the Go to feature. And once i’m there, i can use the breadcrumb navigation items to switch between schemas and objects w/o having to go back to the tree.
Hi Jeff,
This is awesome! Just wondering, with Application Express objects, I am only able to get Application-level information and not the page-level information. Is this intentional?
Not intentional, I filed a similar bug here just this Friday.
I have been waiting for this ever since you announced its coming! Thanks a lot.
You’re very welcome!
Congrats for the release !
Is there a minimum version of VS Code required ?
It seems that our version 1.79.2 dating from May 2023 is not compatible with the extension.
We assume you’re on latest, esp as it so easily self-updates. Your copy is 8 months old, so I know for sure we’re not testing against that.
Hey Jeff,
Congrats! SQL Developer extension in VS Code is a big win 🙂
Is there a way to run queries (using Ctrl + Enter) from a saved script? I am able to run the queries from the worksheet just fine but, as soon as I save the file (ext .sql) I am loosing all the controls (not sure if it is expected behavior) and I need to rely on SQLcl to run queries (by copying the queries from file to terminal).
if you don’t see these items when your SQL or other database file is opened, it means our extension isn’t active, because you have someething else installed causing a conflict
We’re going to build intel into the extension to detect this when you activate it, and let you know you need to deactivate extension XYZ, or even offer to do it for you
Hello Jeff,
Happy New Year! And thank you and the Oracle SQL Developer team for the Oracle SQL Developer extension in Visual Studio Code (VSC). It was super easy to install and appears to be surprisingly faster to use too. Congratulations and keep up the great work!
Thanks!
Where is the best place to see list of future plans for functionality such as the outline view for PL/SQL code (unless we’re supposed to use the “explorer” view instead. Nice to be able to see the various declarations, procs, etc in a tight outline and to be able to jump to a routine by clicking a node in the outline.
What you’re describing in the Outline, exists as a feature now.
What are you looking for?
Thanks Jeff. Tried it today in vscode. But facing very high memory utilisation issue.
Just opened a single sql worksheet and 2-3 packages and vscode is consuming 4 GB of RAM for it. CPU is also hovering around 30%.
Also is there a way to pin multiple sql query results like sql developer?
No way to maintain multiple grids/query results, yet.
4GB sounds excessive…
It looks like we’re not doing garbage collection on our JVM frequently enough, filing a ticket on that, thanks for your feedback!
Awesome extension.
When selecting a large number of columns, the default Query Result output format “Auto-fit All Columns” = “Fit Screen”, which shows only 3 char from each column. How can we change the default to Best Fit
Already in the hopper, just didn’t make the final cut for v1.
Came here to ask this and glad someone pointed it out already.
Great extension and great work – but until that results grid is better formatted, I’m going to have trouble making a switch. The row height is too large, would like to use a smaller/different font and the 3 characters with the “….” instead of best fit is the deal breaker.
Looking forward to your next release!
Tell me more about the row height being too large…you want to squeeze more visible rows on the screen?
Quick note – thank you for being so engaged. I don’t know if this is the right ‘title’ for you but you’re the best product manager I’ve seen…..
Yes – more rows. A quick comparison here….. In roughly the same screen space it’s 17 rows in VSCode, 28 in the client version. Everything is just more ‘compact’ in the client version.
https://imgur.com/a/OSIsqjK
Yup, I got it.
This would be great to have.
It’s coming VERY SOON. I’m testing it out now, hope to ship .. like I said, ‘soon.’
Hi Jeff,
What is the difference between these 2 extensions for Oracle: –
1. https://marketplace.visualstudio.com/items?itemName=Oracle.sql-developer
2. https://marketplace.visualstudio.com/items?itemName=Oracle.oracledevtools
Should we remove extension #2 and keep using extension #1 only from here on?
One is from the .NET team and one is from the SQL Developer team.
One will have features/support for SQL Developer, Data Modeler, ORDS, SQLcl, and other will not.
If your team likes using SQL Developer, then it’s an easy, clear choice.
Also, don’t use both, as that creates extension conflicts and will break things like insight, and feature support in files (execute query).
This is good news! Thanks and well done to all those who have made this possible. Looking forward to more features as development progresses.
One question as someone who uses Windows 11 Arm as virtual machine on Apple Silicon Mac. VS Code marketplace on the Windows virtual machine reports that the extension isn’t currently available on the market place stating ‘The ‘Oracle SQL Developer Extension for VSCode’ extension is not available in Visual Studio Code for Windows ARM.’
Is this something in the pipeline and likely to be addressed in the future?
You’re the 2nd person to ask, we hadn’t planned on adding support for that platform as it’s not very widespread. What about running it native on your Silicon Mac, instead of from your VM?
Hi Jeff,
Yes I can use VS Code directly on my Mac if required. Admittedly it is currently a niche case, I do personally prefer to use Windows when doing Oracle dev work for clients due to sometimes needing other Windows only software/tools as part of my job. Generally Windows 11 ARM is gaining more traction and most other non-native ARM software is handled pretty well by Window’s x86/x64 emulation layer. So one for the future hopefully. :fingers crossed:
Thanks.
Thanks for the input! I’m running a poll here
Is there a way to install this extension without internet connectivity? Some of our development and querying takes place in highly protected environments (FedRamp, Schrems, NIST). We can get binaries approved for installs but generally outside connectivity is not available. The existing SQL Developer package with JVM was ideal for this since I could run the installer, load connections and User Defined Reports and let people loose on it.
On a positive note I’m looking forward to kicking the tires on User Defined Reports when that feature is incorporated, I’ll be sure to put it through its paces!
OK I answered my own question. VS Code can already be downloaded and installed via a binary installation package so we’re good there. We can download the SQL Developer VSIX file from the Extension Marketplace website. Once VS code is running the Extension Manager has an “Install from VSIX” menu selection. I’ll give it a whirl and see how it goes.
https://marketplace.visualstudio.com/items?itemName=Oracle.sql-developer
Hello Jeff,
When you said “It’s the future of SQL Developer.”, does it mean that the Java version has any future?
It’s great to be able to code PL/SQL in VS Code, but I’d like to see more synergy between the tools, like a visual Liquibase feature also in SQL Developer or a SQLcl terminal in SQL Developer (we can now use the VS Code terminal, but it will still be a isolated application). Additionally, we have “SQL Developer Web” and “Apex SQL Workshop” with much smaller features but things like “Quick SQL” only there. I know it’s hard work and a huge change on previous Oracle tools. I’m trying to establish a standard development workflow for my team but I can’t see where this is going and it’s creating some anxiety not having a single IDE.
Thanks
Any way to filter objects in the connection panel yet?
Thanks
Hello
Connection type TNS does not work:
connections.tnsConfiguration.path points to folder where tnsnames.ora is located, like in standalone SQL Developer, but extension states: The location ‘Z:\XXX\YYY’ specified in the preferences does not exist or does not contain any aliases.
Does any one tried this type of connection??
Cheers
Yes, it should work.
Is Z a windows networked drive? Shouldn’t matter…
I might need your ORA file for testing, or maybe you can great a dummy one yourself?
Z: is not a networked drive, local drive, just an example.
My tnsnames.ora file is 10KB(many entries and comments) and it still works in Sql Dev.
I have created new file, just one entry. Connection to DB worked. In Connection Type -> Advanced got my tnsnames.ora location under key oracle.net.tns_admin. Copied and pasted old file content and tried to connect after VSC restart. Ok, that worked. But under Details there is no tnsnames location textbox anymore, connection identifier is a text box, so I have to manualy enter connection identifier. Shouldn’t it be a combo, based on file content?? I could enter other connection identifiers and connect, but when I was connected I could not see any tables, views, procedures etc., but I could write queries. Had to restart VSC and reconnect to be able to see full connection tree content.
Will give it a try, but I am waiting for further updates.
Cheers
Yes we are having the some error. It keeps giving the same error no matter where we put the tnsnames.ora file.
Our tsnsnames.ora file is 65K. I hope it’s not a size issue.
Why not use the same connections as the Oracle Dev Tools?
Shouldn’t be an issue but without seeing your file i can only guess.
The other extension isn’t associated with sql developer, but all oracle clients in general look in the same places for that file or you can specify it in preferences.
We are having the same issue related to TNS File Location (always blank) and any value we put in the settings we get the error ” The location “XXXX” specified in the preferences does not exist or does not contain any aliases”.
Funny enough we are able to use the extension from the .Net team without any issue
Please email me your tns file.
Also make sure the other extension isn’t active before using ours to avoid conflicts.
We had non-standard characters in the tns file. Once removed we could add the path no problem.
However, any database defined with more than one name will show in the list with a comma and we cannot connect to it. These should be listed as separate entries.
Second issue is the list of databases should be sorted alphanumerically. Currently it’s listed as it’s defined in the file.
“Non standard characters” – can you provide an example?
The sorting issue already fixed for our next update.
I’ll take a look at the multiple entries vs separate…
I need an example of this please, can you be specific what you mean.
” any database defined with more than one name will show in the list with a comma and we cannot connect to it. “
It’s not working here either.
What isn’t, exactly?
Sorry just saw this comment now.
“I need an example of this please, can you be specific what you mean.”
” any database defined with more than one name will show in the list with a comma and we cannot connect to it. “
Here’s an example of what’s in the TNS file:
DB1DEV,DB1DEV_MEL=(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=TCP)(HOST=dummyserver.mel.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=db1dev_pri.dummyserver.com.au)))
And when creating a connection I will see DB1DEV,DB1DEV_MEL as the name and then I cannot use it to connect with.
I’m also getting this error and can’t figure it out. This came up in a search as the only result!
I tried moving the tnsnames.ora file around to no avail.
Can you be more specific, provide more details?
Thanks Jeff, we love this VS code version of SQL Dev.
but onething we miss really in this VS code version is grouping connections in folders.
particularly when we got nearly 20 to 30 connections, it would be easy to group them into 4 or 5 folders than maintaining all those connections without folders
Yes, that will come in an update, just didn’t have the time to make it for v1