<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL Developer Archives - Philipp Salvisberg&#039;s Blog</title>
	<atom:link href="https://www.salvis.com/blog/tag/sql-developer/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.salvis.com/blog/tag/sql-developer/</link>
	<description>Database-centric development</description>
	<lastBuildDate>Mon, 27 Jul 2026 09:17:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://www.salvis.com/blog/wp-content/uploads/2014/04/favicon.png</url>
	<title>SQL Developer Archives - Philipp Salvisberg&#039;s Blog</title>
	<link>https://www.salvis.com/blog/tag/sql-developer/</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/>
<atom:link rel="hub" href="https://websubhub.com/hub"/>
<atom:link rel="self" href="https://www.salvis.com/blog/tag/sql-developer/feed/"/>
	<item>
		<title>The Return of SQLcl&#8217;s SCRIPT Command</title>
		<link>https://www.salvis.com/blog/2026/07/25/the-return-of-sqlcls-script-command/</link>
					<comments>https://www.salvis.com/blog/2026/07/25/the-return-of-sqlcls-script-command/#comments</comments>
		
		<dc:creator><![CDATA[Philipp Salvisberg]]></dc:creator>
		<pubDate>Sat, 25 Jul 2026 14:02:15 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[SQL Developer]]></category>
		<category><![CDATA[SQLcl]]></category>
		<guid isPermaLink="false">https://www.salvis.com/blog/?p=21049</guid>

					<description><![CDATA[<p>Introduction The script command was introduced with SQLcl 4.2. It is based on JSR 223, the Java Scripting API, and makes it possible to run JavaScript from SQLcl. This adds client-side control flow, file access, better control of host commands and access to Java classes and JavaScript libraries. JDK 8 was the<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://www.salvis.com/blog/2026/07/25/the-return-of-sqlcls-script-command/">The Return of SQLcl&#8217;s SCRIPT Command</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 id="introduction" class="wp-block-heading">Introduction</h2>



<p class="wp-block-paragraph">The <code>script</code> command was introduced with SQLcl 4.2. It is based on JSR 223, the Java Scripting API, and makes it possible to run JavaScript from SQLcl. This adds client-side control flow, file access, better control of host commands and access to Java classes and JavaScript libraries. </p>



<p class="wp-block-paragraph">JDK 8 was the latest and greatest back in 2015 when Kris Rice promoted this feature on his <a href="https://krisrice.io/2015-10-13-sqlcl-oct-13th-edition/" target="_blank" rel="noreferrer noopener">blog</a>. The <code>script</code> command worked out of the box because JDK 8 included the Nashorn JavaScript engine. Nashorn was deprecated in JDK 11 and removed in JDK 15, but continues as a <a href="https://github.com/openjdk/nashorn" data-type="link" data-id="https://github.com/openjdk/nashorn" target="_blank" rel="noreferrer noopener">standalone OpenJDK library</a> for JDK 11 and newer. The current version 26.2 of SQLcl requires JDK 11 or newer, but does not include a JavaScript engine. Therefore, <code>script</code> no longer works with a modern standard JDK.</p>



<p class="wp-block-paragraph">The <a href="https://docs.oracle.com/en/database/oracle/sql-developer-command-line/26.2/sqcug/working-sqlcl.html" target="_blank" rel="noreferrer noopener">documented solution</a> is to use GraalVM and install its JavaScript engine using the command <code>gu install js</code>. However, <code>gu</code> has been removed from more recent GraalVM distributions. Applications requiring a JavaScript engine must therefore provide the necessary Maven dependencies themselves.</p>



<p class="wp-block-paragraph">Furthermore, the SQL Developer extension for VS Code comes with its own JDK 25. We cannot simply replace it with an older GraalVM JDK since some components require a JDK 25 and are therefore incompatible with older JDK versions.</p>



<p class="wp-block-paragraph">The <code>script</code> command does not work in SQLcl embedded in SQL Developer for VS Code.</p>



<p class="wp-block-paragraph">Let’s change that.</p>



<h2 id="patching-sqlcl-in-sql-developer-for-vs-code" class="wp-block-heading">Patching SQLcl in SQL Developer for VS Code</h2>



<p class="wp-block-paragraph">I experimented with various approaches. The result is <a href="https://github.com/PhilippSalvisberg/sqlcl-js-patch/blob/main/sqlcl-js-patch.sh" data-type="link" data-id="https://github.com/PhilippSalvisberg/sqlcl-js-patch" target="_blank" rel="noreferrer noopener">sqlcl-js-patch.sh</a>. The idea is to download the missing JavaScript engine and its dependencies from Maven Central and add them to an SQLcl installation. This shell script supports GraalJS and Nashorn on JDK 17 and newer.</p>



<p class="wp-block-paragraph">For SQL Developer for VS Code, I prefer Nashorn. It is compatible with the behaviour we had with JDK 8 and JDK 11 and produces no warnings when SQLcl starts.</p>



<p class="wp-block-paragraph">Close all SQLcl sessions in VS Code. Then run the following command in a macOS, Linux or Git Bash shell:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">1) Patch SQLcl with Nashorn JavaScript engine</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>curl --fail --location --silent --show-error \
  https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh |
  sh -s -- add nashorn "sqlcl_home=$HOME/.vscode"</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">curl</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--fail</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--location</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--silent</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--show-error</span><span style="color: #D4D4D4"> </span><span style="color: #D7BA7D">\</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #CE9178">https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh</span><span style="color: #D4D4D4"> |</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #DCDCAA">sh</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-s</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">add</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">nashorn</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;sqlcl_home=</span><span style="color: #9CDCFE">$HOME</span><span style="color: #CE9178">/.vscode&quot;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Downloading nashorn-core-15.7.jar
Downloading asm-7.3.1.jar
Downloading asm-commons-7.3.1.jar
Downloading asm-analysis-7.3.1.jar
Downloading asm-tree-7.3.1.jar
Downloading asm-util-7.3.1.jar
No matching libraries found in /Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib.
Installed nashorn-core-15.7.jar
Installed asm-commons-7.3.1.jar
Installed asm-7.3.1.jar
Installed asm-analysis-7.3.1.jar
Installed asm-util-7.3.1.jar
Installed asm-tree-7.3.1.jar
No nashorn.args VM option found in macOS/Linux launcher; skipped Nashorn launcher patch.
Installed nashorn libraries in /Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib.</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">Downloading nashorn-core-15.7.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading asm-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading asm-commons-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading asm-analysis-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading asm-tree-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading asm-util-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">No matching libraries found in /Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib.</span></span>
<span class="line"><span style="color: #D4D4D4">Installed nashorn-core-15.7.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed asm-commons-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed asm-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed asm-analysis-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed asm-util-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed asm-tree-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">No nashorn.args VM option found in macOS/Linux launcher; skipped Nashorn launcher patch.</span></span>
<span class="line"><span style="color: #D4D4D4">Installed nashorn libraries in /Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib.</span></span></code></pre></div>



<p class="wp-block-paragraph">The patch script locates the most recent Oracle SQL Developer extension in the <code>$HOME/.vscode/extensions</code> directory. It adds the necessary JAR files to the embedded SQLcl, whose directory structure differs from that of standalone SQLcl.</p>



<p class="wp-block-paragraph">Now start a new SQLcl session in VS Code and run:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">2) Test script command</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>script
print('Hello from Nashorn');
/</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">script</span></span>
<span class="line"><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;Hello from Nashorn&#39;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">/</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(2 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>SQLcl: Release 26.2 Production on Sat Jul 25 13:19:46 2026

Copyright (c) 1982, 2026, Oracle.  All rights reserved.

Connected to:
Oracle AI Database 26ai Free Release 23.26.2.0.0 - Develop, Learn, and Run for Free
Version 23.26.2.0.0

Hello from Nashorn
SQL> </textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">SQLcl: Release 26.2 Production on Sat Jul 25 13:19:46 2026</span></span>
<span class="line"><span style="color: #D4D4D4"></span></span>
<span class="line"><span style="color: #D4D4D4">Copyright (c) 1982, 2026, Oracle.  All rights reserved.</span></span>
<span class="line"><span style="color: #D4D4D4"></span></span>
<span class="line"><span style="color: #D4D4D4">Connected to:</span></span>
<span class="line"><span style="color: #D4D4D4">Oracle AI Database 26ai Free Release 23.26.2.0.0 - Develop, Learn, and Run for Free</span></span>
<span class="line"><span style="color: #D4D4D4">Version 23.26.2.0.0</span></span>
<span class="line"><span style="color: #D4D4D4"></span></span>
<span class="line cbp-line-highlight"><span style="color: #D4D4D4">Hello from Nashorn</span></span>
<span class="line"><span style="color: #D4D4D4">SQL&gt; </span></span></code></pre></div>



<p class="wp-block-paragraph">This does not work when the code is executed directly in a SQL Developer worksheet. It works when you select <strong>Run in SQLcl</strong>.</p>



<p class="wp-block-paragraph">That’s it. The <code>script</code> command is back.</p>



<p class="wp-block-paragraph">Please note that updating the SQL Developer extension installs a new embedded SQLcl. In that case, run the patch command again.</p>



<h2 id="does-it-work-with-graaljs" class="wp-block-heading">Does It Work With GraalJS?</h2>



<p class="wp-block-paragraph">Yes. </p>



<p class="wp-block-paragraph">Just pass <code>graaljs</code> instead of <code>nashorn</code>:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">3) Patch SQLcl with GraalJS JavaScript engine</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>curl --fail --location --silent --show-error \
  https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh |
  sh -s -- add graaljs "sqlcl_home=$HOME/.vscode"</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">curl</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--fail</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--location</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--silent</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--show-error</span><span style="color: #D4D4D4"> </span><span style="color: #D7BA7D">\</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #CE9178">https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh</span><span style="color: #D4D4D4"> |</span></span>
<span class="line cbp-line-highlight"><span style="color: #D4D4D4">  </span><span style="color: #DCDCAA">sh</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-s</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">add</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">graaljs</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;sqlcl_home=</span><span style="color: #9CDCFE">$HOME</span><span style="color: #CE9178">/.vscode&quot;</span></span></code></pre></div>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Downloading collections-25.1.3.jar
Downloading icu4j-25.1.3.jar
Downloading jniutils-25.1.3.jar
Downloading js-language-25.1.3.jar
Downloading js-scriptengine-25.1.3.jar
Downloading nativeimage-25.1.3.jar
Downloading polyglot-25.1.3.jar
Downloading regex-25.1.3.jar
Downloading truffle-api-25.1.3.jar
Downloading truffle-compiler-25.1.3.jar
Downloading truffle-runtime-25.1.3.jar
Downloading word-25.1.3.jar
Downloading xz-25.1.3.jar
Deleted nashorn-core-15.7.jar
Deleted asm-commons-7.3.1.jar
Deleted asm-7.3.1.jar
Deleted asm-analysis-7.3.1.jar
Deleted asm-util-7.3.1.jar
Deleted asm-tree-7.3.1.jar
Deleted asm-commons-7.3.1.jar
Deleted asm-analysis-7.3.1.jar
Deleted asm-tree-7.3.1.jar
Deleted asm-util-7.3.1.jar
Installed collections-25.1.3.jar
Installed regex-25.1.3.jar
Installed truffle-compiler-25.1.3.jar
Installed polyglot-25.1.3.jar
Installed truffle-api-25.1.3.jar
Installed jniutils-25.1.3.jar
Installed truffle-runtime-25.1.3.jar
Installed js-language-25.1.3.jar
Installed xz-25.1.3.jar
Installed word-25.1.3.jar
Installed icu4j-25.1.3.jar
Installed js-scriptengine-25.1.3.jar
Installed nativeimage-25.1.3.jar
Installed graaljs libraries in /Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib.</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">Downloading collections-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading icu4j-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading jniutils-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading js-language-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading js-scriptengine-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading nativeimage-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading polyglot-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading regex-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading truffle-api-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading truffle-compiler-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading truffle-runtime-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading word-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Downloading xz-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted nashorn-core-15.7.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-commons-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-analysis-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-util-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-tree-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-commons-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-analysis-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-tree-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Deleted asm-util-7.3.1.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed collections-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed regex-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed truffle-compiler-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed polyglot-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed truffle-api-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed jniutils-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed truffle-runtime-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed js-language-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed xz-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed word-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed icu4j-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed js-scriptengine-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed nativeimage-25.1.3.jar</span></span>
<span class="line"><span style="color: #D4D4D4">Installed graaljs libraries in /Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib.</span></span></code></pre></div>



<p class="wp-block-paragraph">Let&#8217;s start a new SQLcl session in VS Code and run:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">4) Test script command</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>script
print('Hello from GraalJS');
/</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">script</span></span>
<span class="line"><span style="color: #DCDCAA">print</span><span style="color: #D4D4D4">(</span><span style="color: #CE9178">&#39;Hello from GraalJS&#39;</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">/</span></span></code></pre></div>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary>Show/hide output</summary>
<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>SQLcl: Release 26.2 Production on Sat Jul 25 12:20:22 2026

Copyright (c) 1982, 2026, Oracle.  All rights reserved.

WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by com.oracle.truffle.polyglot.JDKSupport in module org.graalvm.truffle (file:/Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib/truffle-api-25.1.3.jar)
WARNING: Use --enable-native-access=org.graalvm.truffle to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled

&#91;To redirect Truffle log output to a file use one of the following options:
* '--log.file=&lt;path>' if the option is passed using a guest language launcher.
* '-Dpolyglot.log.file=&lt;path>' if the option is passed using the host Java launcher.
* Configure logging using the polyglot embedding API.&#93;
&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.
Execution without runtime compilation will negatively impact the guest application performance.
The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.
For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.
To disable this warning use the '--engine.WarnInterpreterOnly=false' option or the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.
&#91;To redirect Truffle log output to a file use one of the following options:
* '--log.file=&lt;path>' if the option is passed using a guest language launcher.
* '-Dpolyglot.log.file=&lt;path>' if the option is passed using the host Java launcher.
* Configure logging using the polyglot embedding API.&#93;
&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.
Execution without runtime compilation will negatively impact the guest application performance.
The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.
For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.
To disable this warning use the '--engine.WarnInterpreterOnly=false' option or the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by com.oracle.truffle.api.strings.TStringUnsafe (file:/Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib/truffle-api-25.1.3.jar)
WARNING: Please consider reporting this to the maintainers of class com.oracle.truffle.api.strings.TStringUnsafe
WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
&#91;To redirect Truffle log output to a file use one of the following options:
* '--log.file=&lt;path>' if the option is passed using a guest language launcher.
* '-Dpolyglot.log.file=&lt;path>' if the option is passed using the host Java launcher.
* Configure logging using the polyglot embedding API.&#93;
&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.
Execution without runtime compilation will negatively impact the guest application performance.
The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.
For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.
To disable this warning use the '--engine.WarnInterpreterOnly=false' option or the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.
&#91;To redirect Truffle log output to a file use one of the following options:
* '--log.file=&lt;path>' if the option is passed using a guest language launcher.
* '-Dpolyglot.log.file=&lt;path>' if the option is passed using the host Java launcher.
* Configure logging using the polyglot embedding API.&#93;
&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.
Execution without runtime compilation will negatively impact the guest application performance.
The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.
For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.
To disable this warning use the '--engine.WarnInterpreterOnly=false' option or the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.
&#91;To redirect Truffle log output to a file use one of the following options:
* '--log.file=&lt;path>' if the option is passed using a guest language launcher.
* '-Dpolyglot.log.file=&lt;path>' if the option is passed using the host Java launcher.
* Configure logging using the polyglot embedding API.&#93;
&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.
Execution without runtime compilation will negatively impact the guest application performance.
The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.
For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.
To disable this warning use the '--engine.WarnInterpreterOnly=false' option or the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.
Connected to:
Oracle AI Database 26ai Free Release 23.26.2.0.0 - Develop, Learn, and Run for Free
Version 23.26.2.0.0

&#91;To redirect Truffle log output to a file use one of the following options:
* '--log.file=&lt;path>' if the option is passed using a guest language launcher.
* '-Dpolyglot.log.file=&lt;path>' if the option is passed using the host Java launcher.
* Configure logging using the polyglot embedding API.&#93;
&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.
Execution without runtime compilation will negatively impact the guest application performance.
The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.
For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.
To disable this warning use the '--engine.WarnInterpreterOnly=false' option or the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.
Hello from GraalJS
SQL> </textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">SQLcl: Release 26.2 Production on Sat Jul 25 12:20:22 2026</span></span>
<span class="line"><span style="color: #D4D4D4"></span></span>
<span class="line"><span style="color: #D4D4D4">Copyright (c) 1982, 2026, Oracle.  All rights reserved.</span></span>
<span class="line"><span style="color: #D4D4D4"></span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: A restricted method in java.lang.System has been called</span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: java.lang.System::load has been called by com.oracle.truffle.polyglot.JDKSupport in module org.graalvm.truffle (file:/Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib/truffle-api-25.1.3.jar)</span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: Use --enable-native-access=org.graalvm.truffle to avoid a warning for callers in this module</span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: Restricted methods will be blocked in a future release unless native access is enabled</span></span>
<span class="line"><span style="color: #D4D4D4"></span></span>
<span class="line"><span style="color: #D4D4D4">&#91;To redirect Truffle log output to a file use one of the following options:</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;--log.file=&lt;path&gt;&#39; if the option is passed using a guest language launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;-Dpolyglot.log.file=&lt;path&gt;&#39; if the option is passed using the host Java launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* Configure logging using the polyglot embedding API.&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.</span></span>
<span class="line"><span style="color: #D4D4D4">Execution without runtime compilation will negatively impact the guest application performance.</span></span>
<span class="line"><span style="color: #D4D4D4">The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.</span></span>
<span class="line"><span style="color: #D4D4D4">For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.</span></span>
<span class="line"><span style="color: #D4D4D4">To disable this warning use the &#39;--engine.WarnInterpreterOnly=false&#39; option or the &#39;-Dpolyglot.engine.WarnInterpreterOnly=false&#39; system property.</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;To redirect Truffle log output to a file use one of the following options:</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;--log.file=&lt;path&gt;&#39; if the option is passed using a guest language launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;-Dpolyglot.log.file=&lt;path&gt;&#39; if the option is passed using the host Java launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* Configure logging using the polyglot embedding API.&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.</span></span>
<span class="line"><span style="color: #D4D4D4">Execution without runtime compilation will negatively impact the guest application performance.</span></span>
<span class="line"><span style="color: #D4D4D4">The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.</span></span>
<span class="line"><span style="color: #D4D4D4">For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.</span></span>
<span class="line"><span style="color: #D4D4D4">To disable this warning use the &#39;--engine.WarnInterpreterOnly=false&#39; option or the &#39;-Dpolyglot.engine.WarnInterpreterOnly=false&#39; system property.</span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: A terminally deprecated method in sun.misc.Unsafe has been called</span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: sun.misc.Unsafe::objectFieldOffset has been called by com.oracle.truffle.api.strings.TStringUnsafe (file:/Users/phs/.vscode/extensions/oracle.sql-developer-26.2.0-darwin-arm64/dbtools/sqlcl/lib/truffle-api-25.1.3.jar)</span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: Please consider reporting this to the maintainers of class com.oracle.truffle.api.strings.TStringUnsafe</span></span>
<span class="line"><span style="color: #D4D4D4">WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;To redirect Truffle log output to a file use one of the following options:</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;--log.file=&lt;path&gt;&#39; if the option is passed using a guest language launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;-Dpolyglot.log.file=&lt;path&gt;&#39; if the option is passed using the host Java launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* Configure logging using the polyglot embedding API.&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.</span></span>
<span class="line"><span style="color: #D4D4D4">Execution without runtime compilation will negatively impact the guest application performance.</span></span>
<span class="line"><span style="color: #D4D4D4">The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.</span></span>
<span class="line"><span style="color: #D4D4D4">For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.</span></span>
<span class="line"><span style="color: #D4D4D4">To disable this warning use the &#39;--engine.WarnInterpreterOnly=false&#39; option or the &#39;-Dpolyglot.engine.WarnInterpreterOnly=false&#39; system property.</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;To redirect Truffle log output to a file use one of the following options:</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;--log.file=&lt;path&gt;&#39; if the option is passed using a guest language launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;-Dpolyglot.log.file=&lt;path&gt;&#39; if the option is passed using the host Java launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* Configure logging using the polyglot embedding API.&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.</span></span>
<span class="line"><span style="color: #D4D4D4">Execution without runtime compilation will negatively impact the guest application performance.</span></span>
<span class="line"><span style="color: #D4D4D4">The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.</span></span>
<span class="line"><span style="color: #D4D4D4">For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.</span></span>
<span class="line"><span style="color: #D4D4D4">To disable this warning use the &#39;--engine.WarnInterpreterOnly=false&#39; option or the &#39;-Dpolyglot.engine.WarnInterpreterOnly=false&#39; system property.</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;To redirect Truffle log output to a file use one of the following options:</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;--log.file=&lt;path&gt;&#39; if the option is passed using a guest language launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;-Dpolyglot.log.file=&lt;path&gt;&#39; if the option is passed using the host Java launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* Configure logging using the polyglot embedding API.&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.</span></span>
<span class="line"><span style="color: #D4D4D4">Execution without runtime compilation will negatively impact the guest application performance.</span></span>
<span class="line"><span style="color: #D4D4D4">The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.</span></span>
<span class="line"><span style="color: #D4D4D4">For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.</span></span>
<span class="line"><span style="color: #D4D4D4">To disable this warning use the &#39;--engine.WarnInterpreterOnly=false&#39; option or the &#39;-Dpolyglot.engine.WarnInterpreterOnly=false&#39; system property.</span></span>
<span class="line"><span style="color: #D4D4D4">Connected to:</span></span>
<span class="line"><span style="color: #D4D4D4">Oracle AI Database 26ai Free Release 23.26.2.0.0 - Develop, Learn, and Run for Free</span></span>
<span class="line"><span style="color: #D4D4D4">Version 23.26.2.0.0</span></span>
<span class="line"><span style="color: #D4D4D4"></span></span>
<span class="line"><span style="color: #D4D4D4">&#91;To redirect Truffle log output to a file use one of the following options:</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;--log.file=&lt;path&gt;&#39; if the option is passed using a guest language launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* &#39;-Dpolyglot.log.file=&lt;path&gt;&#39; if the option is passed using the host Java launcher.</span></span>
<span class="line"><span style="color: #D4D4D4">* Configure logging using the polyglot embedding API.&#93;</span></span>
<span class="line"><span style="color: #D4D4D4">&#91;engine&#93; WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.</span></span>
<span class="line"><span style="color: #D4D4D4">Execution without runtime compilation will negatively impact the guest application performance.</span></span>
<span class="line"><span style="color: #D4D4D4">The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.</span></span>
<span class="line"><span style="color: #D4D4D4">For more information see: https://www.graalvm.org/latest/reference-manual/embed-languages/#runtime-optimization-support.</span></span>
<span class="line"><span style="color: #D4D4D4">To disable this warning use the &#39;--engine.WarnInterpreterOnly=false&#39; option or the &#39;-Dpolyglot.engine.WarnInterpreterOnly=false&#39; system property.</span></span>
<span class="line cbp-line-highlight"><span style="color: #D4D4D4">Hello from GraalJS</span></span>
<span class="line"><span style="color: #D4D4D4">SQL&gt; </span></span></code></pre></div>
</details>



<p class="wp-block-paragraph">After several warnings, the expected result appears at the end.</p>



<p class="wp-block-paragraph">I explained the <a href="https://github.com/PhilippSalvisberg/sqlcl-js-patch/tree/main#graaljs-related-warnings" target="_blank" rel="noreferrer noopener">GraalJS-related warnings</a> in my GitHub repository. The following environment setting will suppress most of the warnings. Where you define this variable depends on your operating system and shell. In any case, the environment variable must be visible before you start VS Code.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">5) Non-breaking JDK_JAVA_OPTIONS to suppress warnings</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>export JDK_JAVA_OPTIONS="-Dpolyglot.engine.WarnInterpreterOnly=false -Dpolyglot.js.nashorn-compat=true"</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">export</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">JDK_JAVA_OPTIONS</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;-Dpolyglot.engine.WarnInterpreterOnly=false -Dpolyglot.js.nashorn-compat=true&quot;</span></span></code></pre></div>



<p class="wp-block-paragraph">If you are only using JDK 24 or newer on your system, you can disable all warnings as follows. However, be aware that any JDK version below 24 will no longer work, because the Java runtime stops with an error when passing unknown JVM arguments.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">6) Breaking JDK_JAVA_OPTIONS to suppress warnings</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>export JDK_JAVA_OPTIONS="--illegal-native-access=allow --sun-misc-unsafe-memory-access=allow -Dpolyglot.engine.WarnInterpreterOnly=false -Dpolyglot.js.nashorn-compat=true"</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #569CD6">export</span><span style="color: #D4D4D4"> </span><span style="color: #9CDCFE">JDK_JAVA_OPTIONS</span><span style="color: #D4D4D4">=</span><span style="color: #CE9178">&quot;--illegal-native-access=allow --sun-misc-unsafe-memory-access=allow -Dpolyglot.engine.WarnInterpreterOnly=false -Dpolyglot.js.nashorn-compat=true&quot;</span></span></code></pre></div>



<h2 id="can-i-also-use-this-for-standalone-sqlcl" class="wp-block-heading">Can I Also Use This for Standalone SQLcl?</h2>



<p class="wp-block-paragraph">Yes.</p>



<p class="wp-block-paragraph">Pass the SQLcl installation directory instead of the VS Code configuration directory:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">7) Patch standalone SQLcl with Nashorn JavaScript engine (macOS/Linux only)</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>curl --fail --location --silent --show-error \
  https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh |
  sh -s -- add nashorn "sqlcl_home=/path/to/sqlcl"</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">curl</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--fail</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--location</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--silent</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--show-error</span><span style="color: #D4D4D4"> </span><span style="color: #D7BA7D">\</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #CE9178">https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh</span><span style="color: #D4D4D4"> |</span></span>
<span class="line cbp-line-highlight"><span style="color: #D4D4D4">  </span><span style="color: #DCDCAA">sh</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-s</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">add</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">nashorn</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;sqlcl_home=/path/to/sqlcl&quot;</span></span></code></pre></div>



<p class="wp-block-paragraph">This works very well on macOS and Linux. Besides installing the Nashorn libraries, the patch removes the following option from the <code>bin/sql</code> launcher:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>-Dnashorn.args=--no-deprecation-warning</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">Dnashorn</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">args</span><span style="color: #D4D4D4">=--no-deprecation-warning</span></span></code></pre></div>



<p class="wp-block-paragraph">The standalone Nashorn engine does not support this option. It throws an exception while the engine is initialised, and SQLcl consequently reports <code>JavaScript engine not found.</code></p>



<p class="wp-block-paragraph">On Windows, <code>bin/sql.exe</code> is a binary executable. The patch script cannot modify it. It can add the Nashorn libraries when run from Git Bash, but it cannot apply the necessary launcher workaround. Therefore, Nashorn does not work with standalone SQLcl on Windows. GraalJS does not need this launcher change and is therefore the only option supported by the patch script on Windows:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);--cbp-line-highlight-color:rgba(234, 191, 191, 0.2);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">8) Patch standalone SQLcl with GraalJS JavaScript engine</span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>curl --fail --location --silent --show-error \
  https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh |
  sh -s -- add graaljs "sqlcl_home=/path/to/sqlcl"</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">curl</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--fail</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--location</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--silent</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--show-error</span><span style="color: #D4D4D4"> </span><span style="color: #D7BA7D">\</span></span>
<span class="line"><span style="color: #D4D4D4">  </span><span style="color: #CE9178">https://raw.githubusercontent.com/PhilippSalvisberg/sqlcl-js-patch/refs/heads/main/sqlcl-js-patch.sh</span><span style="color: #D4D4D4"> |</span></span>
<span class="line cbp-line-highlight"><span style="color: #D4D4D4">  </span><span style="color: #DCDCAA">sh</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">-s</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">--</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">add</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">graaljs</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&quot;sqlcl_home=/path/to/sqlcl&quot;</span></span></code></pre></div>



<p class="wp-block-paragraph">This raises an interesting question. SQL Developer for VS Code also includes a Windows <code>bin/sql.exe</code> that the patch script cannot modify. So why does Nashorn work there?</p>



<h2 id="but-why-does-nashorn-work-in-embedded-sqlcl" class="wp-block-heading">But Why Does Nashorn Work in Embedded SQLcl?</h2>



<p class="wp-block-paragraph">I mentioned before that the embedded SQLcl version has a different folder structure (there is no <code>lib/ext</code> folder for third-party libraries). But that&#8217;s not the only difference. </p>



<p class="wp-block-paragraph">The launcher is also different. Neither <code>bin/sql</code> nor <code>bin/sql.exe</code> includes the <code>-Dnashorn.args=--no-deprecation-warning</code> JVM option.</p>



<p class="wp-block-paragraph"> As a result, the Nashorn JavaScript engine works in the embedded SQLcl version of SQL Developer for VS Code.</p>



<h2 id="outlook" class="wp-block-heading">Outlook</h2>



<p class="wp-block-paragraph">I hope this helps you bring the SQLcl <code>script</code> command back to life in your environments, especially in SQL Developer for VS Code, where using another Java runtime is not a practical option.</p>



<p class="wp-block-paragraph">However, I also hope that we will not have to run <code>sqlcl-js-patch.sh</code> for every new SQLcl or SQL Developer extension version until the end of time. The patch consists mainly of adding libraries that are available from Maven Central. It would be great if the Oracle SQL Developer team included these libraries in a future update and made the <code>script</code> command work out of the box again.</p>



<p class="wp-block-paragraph"><em>Updated on 2026-07-27, mentioned OpenJDK Nashorn in paragraph 2</em>.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.salvis.com/blog/2026/07/25/the-return-of-sqlcls-script-command/">The Return of SQLcl&#8217;s SCRIPT Command</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.salvis.com/blog/2026/07/25/the-return-of-sqlcls-script-command/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Installing SQL Developer in IDEs Implementing the VS Code Extension API</title>
		<link>https://www.salvis.com/blog/2025/07/05/installing-sql-developer-in-ides-implementing-the-vs-code-extension-api/</link>
		
		<dc:creator><![CDATA[Philipp Salvisberg]]></dc:creator>
		<pubDate>Sat, 05 Jul 2025 13:56:19 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Developer]]></category>
		<category><![CDATA[VSCode]]></category>
		<guid isPermaLink="false">https://www.salvis.com/blog/?p=13951</guid>

					<description><![CDATA[<p>Introduction The Oracle SQL Developer team is working on bringing the essential functionality built over the last 20 years in the classic SQL Developer IDE—a JDeveloper extension running as a standalone application—to the modern VS Code IDE. The integration with the VS Code ecosystem greatly enhances the developer experience. Is it time<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://www.salvis.com/blog/2025/07/05/installing-sql-developer-in-ides-implementing-the-vs-code-extension-api/">Installing SQL Developer in IDEs Implementing the VS Code Extension API</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="introduction">Introduction</h2>



<p class="wp-block-paragraph">The Oracle SQL Developer team is working on bringing the essential functionality built over the last 20 years in the classic SQL Developer IDE—a JDeveloper extension running as a standalone application—to the modern VS Code IDE. The integration with the VS Code ecosystem greatly enhances the developer experience. </p>



<p class="wp-block-paragraph">Is it time to switch? &#8211; Well, it depends on which part of SQL Developer you use and how often. I&#8217;d say it&#8217;s time to start using the SQL Developer extension for VS Code. Use the classic SQL Developer when needed. You will do it less and less over time.</p>



<p class="wp-block-paragraph">The SQL Developer extension is available in the VS Code Marketplace. That simplifies the installation for VS Code users. Unfortunately, this marketplace is not available in forks of VS Code or, more precisely, in IDEs that implement the VS Code extension API, such as <a href="https://vscodium.com/">VSCodium</a>, <a href="https://cursor.com/">Cursor</a>, <a href="https://windsurf.com/editor">Windsurf</a> and <a href="https://theia-ide.org/#theiaide">Theia IDE</a>. So, how do we install VS Code extensions, specifically SQL Developer, in these IDEs? &#8211; I&#8217;ll answer this question in this blog post.</p>



<h2 class="wp-block-heading" id="installing-sql-developer-in-vs-code">Installing SQL Developer in VS Code</h2>



<p class="wp-block-paragraph">The easiest way to install SQL Developer in VS Code is to start VS Code, search for <code>oracle sql developer</code> in the <code>Extensions</code> view, and click on the <code>Install</code> button. That&#8217;s it.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://www.salvis.com/blog/wp-content/uploads/2025/07/image.png"><img fetchpriority="high" decoding="async" width="1230" height="450" src="https://www.salvis.com/blog/wp-content/uploads/2025/07/image.png" alt="Install SQL Developer within VS Code" class="wp-image-13952" style="width:615px" srcset="https://www.salvis.com/blog/wp-content/uploads/2025/07/image.png 1230w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-300x110.png 300w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1024x375.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-768x281.png 768w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-150x55.png 150w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-480x176.png 480w" sizes="(max-width:767px) 480px, (max-width:1230px) 100vw, 1230px" /></a></figure>



<p class="wp-block-paragraph">Please note that the second entry shown in the screenshot above is a deprecated/decommissioned extension developed by another team at Oracle. It&#8217;s a completely unrelated product.</p>



<h2 class="wp-block-heading" id="downloading-sql-developer-vsix-file">Downloading SQL Developer&#8217;s .vsix File</h2>



<p class="wp-block-paragraph">At the time of writing, it is not possible (anymore) to download an extension such as SQL Developer directly from the <a href="https://marketplace.visualstudio.com/items?itemName=Oracle.sql-developer">VS Code Marketplace website</a>. At least not officially. However, it&#8217;s possible in VS Code.</p>



<p class="wp-block-paragraph">Instead of clicking on the <code>install</code> button as before, right-click on the extension and select <code>Download VSIX</code>.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1.png"><img decoding="async" width="1510" height="748" src="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1.png" alt="Download VSIX file within VS Code" class="wp-image-13954" style="width:755px" srcset="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1.png 1510w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1-300x149.png 300w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1-1024x507.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1-768x380.png 768w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1-150x75.png 150w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-1-480x238.png 480w" sizes="(max-width:767px) 480px, (max-width:1510px) 100vw, 1510px" /></a></figure>



<p class="wp-block-paragraph">and then select the platform architecture.</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4.png"><img decoding="async" width="1024" height="287" src="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4-1024x287.png" alt="Select the platform for which you want to download the VSIX" class="wp-image-13960" style="width:595px" srcset="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4-1024x287.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4-300x84.png 300w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4-768x216.png 768w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4-150x42.png 150w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4-480x135.png 480w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-4.png 1190w" sizes="(max-width:767px) 480px, (max-width:1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">This is necessary because SQL Developer comes with a Java Runtime Environment, which contains platform-specific binaries.</p>



<h2 class="wp-block-heading" id="installing-a-vsix-file">Installing a VSIX File</h2>



<p class="wp-block-paragraph">VS Code, VSCodium, Cursor, Windsurf, and Theila IDE provide a <code>Install from VSIX...</code> command. You find it via <code>View -> Command Pallette...</code>. Run it,</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3.png"><img loading="lazy" decoding="async" width="1024" height="109" src="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3-1024x109.png" alt="Install from VSIX..." class="wp-image-13956" style="width:591px" srcset="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3-1024x109.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3-300x32.png 300w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3-768x82.png 768w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3-150x16.png 150w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3-480x51.png 480w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-3.png 1182w" sizes="auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">and select the VSIX file to install, and you&#8217;re done.</p>



<h2 class="wp-block-heading" id="open-vsx-registry">Open VSX Registry</h2>



<p class="wp-block-paragraph">Why are VSCodium, Cursor, Windsurf and Theia IDE not using the VS Code Marketplace? &#8211; Because the <a href="https://www.nuget.org/policies/terms">Terms of Use</a> do not allow this. Here&#8217;s the relevant passage:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">(&#8230;) you may not access, search, obtain or attempt to obtain any Offerings, materials, or information from the Sites through any means other than directly from Microsoft’s publicly supported interfaces (&#8230;)</p>
</blockquote>



<p class="wp-block-paragraph">This is why <a href="https://vscodium.com/">VSCodium</a>, <a href="https://cursor.com/">Cursor</a>, <a href="https://windsurf.com/editor">Windsurf</a> and <a href="https://theia-ide.org/#theiaide">Theia IDE</a> use the alternative marketplace <a href="https://open-vsx.org/">Open VSX Registry</a>.</p>



<p class="wp-block-paragraph">At the time of writing, the Oracle SQL Developer Extension for VSCode is not available in the Open VSX Registry. Here&#8217;s a screenshot of a search in Cursor:</p>



<figure class="wp-block-image size-large is-resized"><a href="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6.png"><img loading="lazy" decoding="async" width="1024" height="610" src="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6-1024x610.png" alt="Search for Oracle SQL Developer  within Cursor" class="wp-image-13964" style="width:633px" srcset="https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6-1024x610.png 1024w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6-300x179.png 300w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6-768x457.png 768w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6-126x75.png 126w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6-480x286.png 480w, https://www.salvis.com/blog/wp-content/uploads/2025/07/image-6.png 1266w" sizes="auto, (max-width:767px) 480px, (max-width:1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">As you see, the deprecated/decommissioned extension is listed, but the successor is missing. </p>



<h2 class="wp-block-heading" id="summary">Summary</h2>



<p class="wp-block-paragraph">Installing an extension in VS Code via the integrated marketplace is super easy. Getting the .vsix file is also straightforward and enables the installation of VS Code extensions in IDEs that implement the VS Code extension API.</p>



<p class="wp-block-paragraph">It would be great if the Oracle SQL Developer team published their SQL Developer extension on the Open VSX Registry too. This would make the initial installation and subsequent updates much simpler.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://www.salvis.com/blog/2025/07/05/installing-sql-developer-in-ides-implementing-the-vs-code-extension-api/">Installing SQL Developer in IDEs Implementing the VS Code Extension API</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sharing SQL Developer Connections #JoelKallmanDay</title>
		<link>https://www.salvis.com/blog/2023/10/11/sharing-sql-developer-connections-joelkallmanday/</link>
		
		<dc:creator><![CDATA[Philipp Salvisberg]]></dc:creator>
		<pubDate>Tue, 10 Oct 2023 22:10:56 +0000</pubDate>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Developer]]></category>
		<category><![CDATA[VSCode]]></category>
		<guid isPermaLink="false">https://www.salvis.com/blog/?p=12481</guid>

					<description><![CDATA[<p>1. The Problem I created a Docker image and a container for the Oracle Database 19c (19.19) for Linux ARM. The container contains ORDS, APEX and various sample schemas. Finally, an Oracle database that runs pretty fast on my Apple Silicon machine. Then I built a cold database clone by creating a<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://www.salvis.com/blog/2023/10/11/sharing-sql-developer-connections-joelkallmanday/">Sharing SQL Developer Connections #JoelKallmanDay</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">1. The Problem</h2>



<p class="wp-block-paragraph">I created a Docker image and a container for the <a href="https://www.oracle.com/database/technologies/oracle19c-linux-arm64-downloads.html">Oracle Database 19c (19.19) for Linux ARM</a>. The container contains ORDS, APEX and various sample schemas. Finally, an Oracle database that runs pretty fast on my Apple Silicon machine. Then I built a cold database clone by creating a container on another machine using a copy of the original Docker volume. So far, so good.</p>



<p class="wp-block-paragraph">In SQL Developer I created a folder named <code>odb190-localhost</code> with 29 connections. Now I&#8217;d like to copy these SQL Developer connections to another machine. Easy, right? Export all connections to a JSON file and import it in the other SQL Developer instance. Yes, this works. But if you have several hundred connections like me, you get more than you want. The target installation might contain connection names with different properties. Therefore you do not want to import and overwrite existing connections and to identify and delete unwanted newly created connections after the import.</p>



<p class="wp-block-paragraph">So, what can we do?</p>



<h2 class="wp-block-heading">2. Some Possible Solutions</h2>



<h3 class="wp-block-heading">2.1. Export Only Wanted Connections</h3>



<p class="wp-block-paragraph">Exporting some chosen connections works technically. However, the export wizard does not support the concept of folders and presents a flat list of all connections. Selecting all connections in a folder is not feasible without sorting or filtering options in the UI.</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-export-connections.png"><img loading="lazy" decoding="async" width="800" height="600" src="https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-export-connections.png" alt="SQL Developer export wizard" class="wp-image-12483" srcset="https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-export-connections.png 800w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-export-connections-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-export-connections-768x576.png 768w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-export-connections-100x75.png 100w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-export-connections-480x360.png 480w" sizes="auto, (max-width:767px) 480px, (max-width:800px) 100vw, 800px" /></a></figure>



<p class="wp-block-paragraph">Finding all entries ending on <code>odb190-localhost</code> is no fun. It might work for a handful of connections, but not for 29.</p>



<h3 class="wp-block-heading">2.2. Export Only One Template Connection</h3>



<p class="wp-block-paragraph">As an alternative, you can export just one connection and import it into the target SQL Developer installation. Use this connection as a kind of template. Click on the connection and select <code>Properties</code> in the context menu.</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-new-select-database-connection.png"><img loading="lazy" decoding="async" width="780" height="500" src="https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-new-select-database-connection.png" alt="New / Select Database Connection in SQL Developer" class="wp-image-12484" srcset="https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-new-select-database-connection.png 780w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-new-select-database-connection-300x192.png 300w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-new-select-database-connection-768x492.png 768w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-new-select-database-connection-117x75.png 117w, https://www.salvis.com/blog/wp-content/uploads/2023/10/sqldev-new-select-database-connection-480x308.png 480w" sizes="auto, (max-width:767px) 480px, (max-width:780px) 100vw, 780px" /></a></figure>



<p class="wp-block-paragraph">In this window, you can change the <code>Name</code>, <code>Username</code> and <code>Password</code> and press <code>Save</code>. Repeat that process for all other connections. Either now or later when you need them.</p>



<p class="wp-block-paragraph">Not really a satisfying solution either, right?</p>



<h3 class="wp-block-heading">2.3. Export All Connections and Filter with VS Code</h3>



<p class="wp-block-paragraph">Exporting all connections is easy. Let&#8217;s look at the file in Visual Studio Code.</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-original.png"><img loading="lazy" decoding="async" width="953" height="710" src="https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-original.png" alt="all-connections.json in VS Code (original)" class="wp-image-12501" srcset="https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-original.png 953w, https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-original-300x225.png 300w, https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-original-768x572.png 768w, https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-original-101x75.png 101w, https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-original-480x358.png 480w" sizes="auto, (max-width:767px) 480px, (max-width:953px) 100vw, 953px" /></a></figure>



<p class="wp-block-paragraph">This is a minified JSON. Let&#8217;s select <code>Format Document</code> from the context menu to make it human-readable.</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-formatted.png"><img decoding="async" src="https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-formatted.png" alt="all-connections.json in VS Code (formatted)" class="wp-image-12487"/></a></figure>



<p class="wp-block-paragraph">Ahh, much better.</p>



<h4 class="wp-block-heading">Removing Unwanted <code>info</code>&nbsp;Objects</h4>



<p class="wp-block-paragraph">On line 11 we see the property <code>NAV_FOLDER</code>. We are only interested in connections with the value <code>odb190-localhost</code>. Is there a way to delete all unwanted entries? Yes, there is. By using <a href="https://jqlang.github.io/jq/">jq</a>, a command line utility to process JSON files. There is also an extension for VS Code named <a href="https://marketplace.visualstudio.com/items?itemName=petli-full.jq-vscode">jq-vscode</a>, which simplifies the development of a jq command.</p>



<p class="wp-block-paragraph">Here&#8217;s the jq command to remove all unwanted <code>info</code> objects from the <code>connections</code> array:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">jq command to remove unwanted connections</span><span role="button" tabindex="0" data-code="del(
    .connections[] 
    | select(.info.NAV_FOLDER!=&quot;odb190-localhost&quot;)
)" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #DCDCAA">del</span><span style="color: #D4D4D4">(</span></span>
<span class="line"><span style="color: #D4D4D4">    .</span><span style="color: #9CDCFE">connections</span><span style="color: #D4D4D4">[] </span></span>
<span class="line"><span style="color: #D4D4D4">    | </span><span style="color: #DCDCAA">select</span><span style="color: #D4D4D4">(.</span><span style="color: #9CDCFE">info</span><span style="color: #D4D4D4">.</span><span style="color: #4FC1FF">NAV_FOLDER</span><span style="color: #D4D4D4">!=</span><span style="color: #CE9178">&quot;odb190-localhost&quot;</span><span style="color: #D4D4D4">)</span></span>
<span class="line"><span style="color: #D4D4D4">)</span></span></code></pre></div>



<p class="wp-block-paragraph">In VS Code you can open a split window via the command <code>JQ: Open a new file to exec jq</code>. There you can enter the jq command.</p>



<figure class="wp-block-image"><a href="https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-jq-result.png"><img decoding="async" src="https://www.salvis.com/blog/wp-content/uploads/2023/10/all-connections-vscode-jq-result.png" alt="all-connections.json filtered with jq-vscode" class="wp-image-12489"/></a></figure>



<p class="wp-block-paragraph">In the lower part of the screen, you can see the result of the jq command. Copy the output and save it to a file to be imported into any SQL Developer installation.</p>



<h3 class="wp-block-heading">2.4. Export All Connections and Filter with JQ CLI</h3>



<p class="wp-block-paragraph">This is basically the same solution as before. The only difference is that we use the <a href="https://jqlang.github.io/jq/">jq</a> command-line tool. jq is available on all major platforms (Linux, Windows, macOS). Download it from <a href="https://jqlang.github.io/jq/download/">here</a> or install it directly with your OS package installer (e.g. apt, yum, dnf, brew, &#8230;).</p>



<p class="wp-block-paragraph">I exported all connections to a file named <code>all-connections.json</code> from SQL Developer.</p>



<p class="wp-block-paragraph">With the following command, I produce the file <code>odb190-localhost-connections.json</code> that contains only the connections in the folder <code>odb190-localhost</code>:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#2b2b2b;color:#c7c7c7">jq CLI command to remove unwanted connections</span><span role="button" tabindex="0" data-code="jq 'del(.connections[] | select(.info.NAV_FOLDER!=&quot;odb190-localhost&quot;))' \
    all-connections.json &gt; odb190-localhost-connections.json" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #9CDCFE">jq</span><span style="color: #D4D4D4"> </span><span style="color: #CE9178">&#39;del(.connections[] | select(.info.NAV_FOLDER!=&quot;odb190-localhost&quot;))&#39;</span><span style="color: #D4D4D4"> \</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #9CDCFE">all</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">connections</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">json</span><span style="color: #D4D4D4"> &gt; </span><span style="color: #9CDCFE">odb190</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">localhost</span><span style="color: #D4D4D4">-</span><span style="color: #9CDCFE">connections</span><span style="color: #D4D4D4">.</span><span style="color: #9CDCFE">json</span></span></code></pre></div>



<p class="wp-block-paragraph">The file <code>odb190-localhost-connections.json</code> is ready to be shared and imported into other SQL Developer installations.</p>



<h2 class="wp-block-heading">3. Conclusion</h2>



<p class="wp-block-paragraph">There are other solutions, not covered in this blog post, to create a filtered connection export from SQL Developer. For example, writing a dedicated SQL Developer extension. Or filtering an export file with another tool. Or processing a JSON export file in the database.</p>



<p class="wp-block-paragraph">However, IMO jq is an excellent tool to process JSON data in shell scripts. Perfect for automation. In this case, it makes sharing a subset of your SQL Developer connections easier. For any filter criteria, you want to apply.</p>
<p>The post <a href="https://www.salvis.com/blog/2023/10/11/sharing-sql-developer-connections-joelkallmanday/">Sharing SQL Developer Connections #JoelKallmanDay</a> appeared first on <a href="https://www.salvis.com/blog">Philipp Salvisberg&#039;s Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
