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.