Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

bagaimana skrip sql saya menentukan apakah itu berjalan di sqldeveloper atau sqlplus?

Saya tidak terbiasa dengan bug ukuran baris Pengembang SQL, jadi tidak yakin seperti apa hasil akhirnya. Tetapi Anda dapat menggunakan sys_context untuk ini:

select sys_context('USERENV', 'MODULE') from dual;

Yang memberikan:

SYS_CONTEXT('USERENV','MODULE')
--------------------------------------------------------------------------------
SQL*Plus

... atau:

SYS_CONTEXT('USERENV','MODULE')                                           
-------------------------------
SQL Developer 

Jadi Anda dapat menyesuaikan apa yang Anda miliki sebagai:

column set_the_line new_value targetlinesize noprint
set termout off
select case sys_context('USERENV', 'MODULE')
    when 'SQL Developer' then 5 else 500 end as set_the_line from dual;
set termout on
set linesize &&targetlinesize

Dan kemudian uji dengan

show linesize

yang memberikan linesize 500 di SQL*Plus dan linesize 5 di Pengembang SQL.

Jika Anda mungkin belum terhubung di SQL*Plus, cukup tentukan nilainya terlebih dahulu; Anda bahkan tidak perlu melakukan sesuatu yang khusus untuk menyembunyikan kesalahan dari select di luar set termout off , meskipun Anda dapat menyertakan whenever sqlerror untuk jaga-jaga login.sql . Anda sedang menyetelnya untuk keluar - tetapi Anda mungkin harus tahu untuk menyetel ulang setelahnya.

define targetlinesize=500
whenever sqlerror continue
set termout off
column set_the_line new_value targetlinesize noprint
select case sys_context('USERENV', 'MODULE')
    when 'SQL Developer' then 5 else 500 end as set_the_line from dual;
set termout on
set linesize &&targetlinesize
show linesize

column value akan menimpanya jika pilihan berhasil, dan tidak menyentuhnya jika gagal. Jika saya memasukkannya ke dalam file bernama client.sql dan jalankan sebagai:

sqlplus -s /nolog @client

Saya hanya mendapatkan output ini:

linesize 500

Dan hal yang sama berjalan di SQL Developer, memberikan linesize 5 lagi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat memperbarui model data Entitas dari database karena kesalahan TNS

  2. %ROWTYPE variabel dari nama tabel

  3. Cara Memeriksa Nilai Parameter NLS di Oracle Database

  4. Konsumsi layanan web dengan PL/SQL:UTL_DBWS atau APEX_WEB_SERVICE?

  5. Solusi untuk penggabungan luar dengan operator IN di Oracle