Mostly Making oracle easy, mostly:
  • Inserting multi-line strings with SQLcl & SQLBLANKLINES
  • Oracle REST APIs & Query Parameter Examples using EMPLOYEES
  • Using SQLcl & Liquibase DIFF command to compare schemas
  • Export your Oracle Autonomous Database using Data Pump
  • On NULLs and your JSON responses for ORDS REST APIs
  • SQL Developer Web: Cleaning up data loading error logs
  • Data Pump & SQL Developer Web for Oracle Autonomous Database
  • ORDS & SQL Developer Web 22.4.2 – Self Service Schemas
Search for:
  • Twitter
  • YouTube
  • LinkedIn
ThatJeffSmith ThatJeffSmith
  • SQL Developer
  • SQL Developer Web
  • REST APIs
  • Data Modeling
  • Ask A Question
  • About
In SQL Developer

Setting Default Script Execution Directory in SQLcl

April 29, 2015 2 Mins Read

We have a script execution directory setting in SQL Developer…but what about our new SQLcl command line utility?

That was a question posed to me this morning.

My answer was..well, let me show you my answer.

Here's where I'm at, directory-wise as I get set to launch SQLcl
Here’s where I’m at, directory-wise as I get set to launch SQLcl
I'm in, and I go to execute my employees.sql script
I’m in, and I go to execute my employees.sql script
But wait, where is it getting the employees.sql script from exactly?
But wait, where is it getting the employees.sql script from exactly?
Oh yeah...what's in there?
Oh yeah…what’s in there?
┌─[16:31:49]─[wvu1999]─[MacBook-Air-Smith]:~/sqlclNEW$
└─>cat login.sql
SET sqlprompt "_user '@' _connect_identifier >"
SET sqlformat ansiconsole
cd /Users/wvu1999/scripts
┌─[16:31:57]─[wvu1999]─[MacBook-Air-Smith]:~/sqlclNEW$
└─>

Now you can see why:

  • My prompt is what it is
  • My output is formatted nicely
  • My script is able to be found

In Case This is All New to You…

SQLcl is a new take on SQL*Plus brought to you by the SQL Developer team.

CD is a new command available. From the HELP…

Note we also support the /nolog option :)
Note we also support the /nolog option 🙂

SET SQLFORMAT allows to you predefine your output to JSON, CSV, HTML, INSERTS..and also to set a ANSICONSOLE for pretty coloring and nicer text spacing and formatting.

This works in SQL Developer, too!

Use the CD command to change where the GUI looks for your files to execute AND where files will be written to.

By default, it’s the %user/temp% directory, as supplied by the OS.

note the CD command at the top

When the script engine goes to write the CSV file, it will do so in my c:\users\jdsmith directory. And this $SQLPATH will be maintained for the duration of my SQL Developer instance….until I change it again 🙂

cddirectoryloginscriptsqlclsqlplus
thatjeffsmith
Author thatjeffsmith

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

  • Website
Prev Post

Install Oracle REST Data Services w/SQL Developer

April 28, 2015 9 Mins Read
Next Post

Defining a RESTful Service in SQL Developer with :BINDS

May 1, 2015 2 Mins Read

Related Posts

Inserting multi-line strings with SQLcl & SQLBLANKLINES

March 20, 2023

Using SQLcl & Liquibase DIFF command to compare schemas

March 9, 2023

Export your Oracle Autonomous Database using Data Pump

March 8, 2023

SQL Developer Web: Cleaning up data loading error logs

February 16, 2023

Data Pump & SQL Developer Web for Oracle Autonomous Database

February 14, 2023

ORDS & SQL Developer Web 22.4.2 – Self Service Schemas

January 31, 2023

14 Comments

  1. Avatar
    Jack 12 months ago Reply

    I use both SQL*Plus and SQLcl. There are some set up commands I use in my login.sql that are conflicting depending on which tool I’m starting. It seems that SQLPATH is used in both. Is there a way to ‘route’ each tool to it’s own location for login.sql (and ONLY login.sql)?

    I don’t want to mess with the “Start in” locations.

    Thanks Jeff.

    • thatjeffsmith
      thatjeffsmith Post Author 12 months ago

      Easiest answer is to put the sqlcl login in a place only SQLcl will see it.

    • Avatar
      Jack 12 months ago

      Could you let me know where those ‘only SQLcl’ locations are documented?

      Thank you.

    • thatjeffsmith
      thatjeffsmith Post Author 12 months ago

      Show login

      That’ll show you where we look.

    • Avatar
      Jeff 12 months ago

      Thanks Jeff!

      Anyone else checking this thread, look into the SQLPATH and ORACLEPATH environment variables.

      ORACLEPATH relevant to SQL*Plus and SQLPATH to SQLcl.

  2. Avatar
    vladimir 6 years ago Reply

    Hello Jeff,

    how do I set NLS_DATE_FORMAT for sqlcli?
    my query returns NLS_DATE_FORMAT DD-MON-RR, but I’d like to use the db setting, which is YYYY-MM-DD-HH24:MI

    Regards,

    Vladimir

    • thatjeffsmith
      thatjeffsmith Post Author 6 years ago

      Alter session set…

    • Avatar
      Jack 11 months ago

      Well, I don’t know quite how I convinced myself earlier that SQL*Plus would ‘respect’ the ORACLEPATH but that is not happening. Both SQL*Plus and SQLcl reference SQLPATH.

      So I’m back to wondering how to get these two tools to look for different versions of LOGIN.SQL…

    • thatjeffsmith
      thatjeffsmith Post Author 11 months ago

      Like I said, put it somewhere sqlplus won’t find it, like in the sqlcl bin directory.

      Or just stop using sqlplus…or write a single login script for both. Setting a sqlcl specific property won’t break sqlplus, you’ll just get an unknown cmd response… easily ignored.

  3. Avatar
    Jocke T 7 years ago Reply

    I have a similar problem. In my login.sql I have

    SET sqlprompt “&[email protected]&_connect_identifier> ”

    Which works fine in SQL*Plus but in SQLcl the prompt doesn’t change from “SQL> ” to my combination.

    If I remove the two ampersands (&) then it works fine in SQLcl but in SQL*Plus I get

    [email protected]_connect_identifier>

    So not the actual value in _connect_identifer but the string itself.

    After some trail and error, this works in both applications:

    SET sqlprompt “_user’@’_connect_identifier> ”

    /Jocke

  4. Avatar
    Fayyaz 7 years ago Reply

    after downloading the new SQL CLI, I have realized that there is something wrong with the cd command. it doesn’t recongnize “\” it seems. Here are more details:

    22:04:57 starfox:[email protected]> cd c:\mytemp\spool
    CD-001: c:mytempspool is not a directory.
    22:05:38 starfox:[email protected]>

    I tried putting this in login.sql as well but no luck. Any workaround?

    • thatjeffsmith
      thatjeffsmith Post Author 7 years ago

      found and fixed, thanks for the report!

  5. Avatar
    Ketan Kothari 8 years ago Reply

    When I am trying to set the sqlprompt, using the below in SQLCL, it does not work. This works fine in SQLPlus.

    column global_name new_value gname
    set termout off
    define gname=idle
    select lower(user) || ‘@’ || instance_name global_name from v$instance;
    select substr(‘&[email protected]&_CONNECT_IDENTIFIER’,1,48) global_name from dual;
    set termout on
    SET SQLPROMPT ‘&gname> ‘

  6. Avatar
    Rajesh 8 years ago Reply

    After adding the last line to my login.sql file

    login.sql

    column global_name new_value gname
    select lower(user) || ‘@’ ||
    substr( global_name, 1, decode( dot,
    0, length(global_name),
    dot-1) ) global_name
    from (select global_name, instr(global_name,’.’) dot
    from global_name );
    set sqlprompt ‘&gname> ‘
    cd c:\users\179818.CTS

    sql prompt looks good before script execution, but not after. (details below)

    C:\Users\179818.CTS>sql /nolog

    SQLcl: Release 4.1.0 Release Candidate on Thu Apr 30 13:22:25 2015

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

    SQL> conn rajesh/[email protected]
    Connected

    [email protected]> select * from dual;

    D
    –
    X

    1 rows selected

    [email protected]> @printtbl “select * from dual”

    PL/SQL procedure successfully completed.

    DUMMY : “X”
    —————–

    [email protected] * from dual0G>
    [email protected] * from dual0G>

Write A Comment Cancel Reply

  • Search this site
  • Looking for help?

    I'm a product manager for Oracle Database,
    publishing tips and tricks for SQL Developer, SQLcl, Data Modeler, and REST Data Services (ORDS)

    Twitter YouTube LinkedIn
  • Tweets by @thatjeffsmith

  • Your Favorite Posts
    • How to Import from Excel to Oracle with SQL Developer
    • Keyboard Shortcuts in Oracle SQL Developer
    • Enabling DBMS_OUTPUT by default in SQL Developer
    • Top 10 Preferences to Tweak when using SQL Developer
    • How To: Generate an ERD for Selected Tables in SQL Developer
    • Formatting Query Results to CSV in Oracle SQL Developer
    • Resetting Your Oracle User Password with SQL Developer
    • Die! Or How to Cancel Queries in Oracle SQL Developer
  • Don’t miss a single post! Enter e-mail to subscribe.
  • Mostly Making Oracle Easy, Mostly

    Privacy Policy 

  • Twitter
  • YouTube
  • LinkedIn
  • Download SQL Developer
  • Developer Tools Message Boards

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle. © Jeff Smith and ThatJeffSmith, 2023

Top
ThatJeffSmith