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.