Ich bin mit einem Zeilengrößenfehler von SQL Developer nicht vertraut, daher bin ich mir nicht sicher, was das Endergebnis sein soll. Aber Sie können sys_context
verwenden
dazu:
select sys_context('USERENV', 'MODULE') from dual;
Was ergibt:
SYS_CONTEXT('USERENV','MODULE')
--------------------------------------------------------------------------------
SQL*Plus
... oder:
SYS_CONTEXT('USERENV','MODULE')
-------------------------------
SQL Developer
So können Sie anpassen, was Sie haben als:
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
Und dann mit
testenshow linesize
was linesize 500
ergibt in SQL*Plus und linesize 5
in SQL Developer.
Wenn Sie möglicherweise noch nicht in SQL*Plus verbunden sind, definieren Sie einfach zuerst den Wert; Sie müssen nicht einmal etwas Besonderes tun, um den Fehler vor select
zu verbergen über den set termout off
hinaus , obwohl Sie einen whenever sqlerror
einfügen könnten für alle Fälle Ihre login.sql
setzt es zum Beenden - aber dann müssen Sie vielleicht wissen, ob Sie es danach zurücksetzen müssen.
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
Die column
Der Wert überschreibt ihn, wenn die Auswahl erfolgreich ist, und berührt ihn nicht, wenn er fehlschlägt. Wenn ich das in eine Datei namens client.sql
stecke und führen Sie es aus als:
sqlplus -s /nolog @client
Ich bekomme nur diese Ausgabe:
linesize 500
Und dasselbe läuft in SQL Developer, was linesize 5
ergibt nochmal.