私はSQLDeveloperの行サイズのバグに精通していないので、最終結果がどうなるかわかりません。ただし、 sys_context
を使用できます。
このために:
select sys_context('USERENV', 'MODULE') from dual;
SYS_CONTEXT('USERENV','MODULE')
--------------------------------------------------------------------------------
SQL*Plus
...または:
SYS_CONTEXT('USERENV','MODULE')
-------------------------------
SQL Developer
だからあなたはあなたが持っているものを次のように適応させることができます:
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
そして、
でテストしますshow linesize
linesize 500
が得られます SQL*Plusおよびlinesize 5
の場合 SQLDeveloperで。
SQL * Plusにまだ接続していない可能性がある場合は、最初に値を定義するだけです。 select
からエラーを隠すために特別なことをする必要はありません。 set termout off
を超えて 、ただし、whenever sqlerror
を含めることができます。 login.sql
の場合に備えて は終了するように設定していますが、後でリセットする必要があるかもしれません。
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
選択が成功した場合、値はそれをオーバーライドし、失敗した場合はタッチしません。それをclient.sql
というファイルに入れると 次のように実行します:
sqlplus -s /nolog @client
この出力のみが表示されます:
linesize 500
また、SQL Developerでも同じことが実行され、linesize 5
が得られます。 もう一度。