Oracle
 sql >> Baza danych >  >> RDS >> Oracle

w jaki sposób mój skrypt sql może określić, czy działa w sqldeveloper czy sqlplus?

Nie znam błędu rozmiaru liniowego programu SQL Developer, więc nie jestem pewien, jaki powinien być wynik końcowy. Możesz jednak użyć sys_context w tym celu:

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

Co daje:

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

... lub:

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

Możesz więc dostosować to, co masz jako:

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

A następnie przetestuj za pomocą

show linesize

co daje linesize 500 w SQL*Plus i linesize 5 w SQL Developer.

Jeśli nie masz jeszcze połączenia w SQL*Plus, po prostu najpierw zdefiniuj wartość; nie musisz nawet robić nic specjalnego, aby ukryć błąd przed select poza set termout off , chociaż możesz dołączyć whenever sqlerror na wszelki wypadek Twój login.sql ustawia go na wyjście - ale być może będziesz musiał wiedzieć, aby później go zresetować.

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 zastąpi go, jeśli wybór się powiedzie, i nie dotknie go, jeśli się nie powiedzie. Jeśli umieszczę to w pliku o nazwie client.sql i uruchom go jako:

sqlplus -s /nolog @client

Otrzymuję tylko to wyjście:

linesize 500

I to samo działa w SQL Developer, dając linesize 5 ponownie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zliczyć(*) wiele tabel, rozmiar i przestrzeń tabel w jednym zapytaniu?

  2. Błąd Oracle SQL:ORA-00923:Nie znaleziono słowa kluczowego From w oczekiwanym miejscu

  3. Brakujący prawy nawias:Przy usuwaniu Ustaw null Przy aktualizacji kaskadowej (SQL/Oracle)

  4. Problemy z instalacją Oracle Database Express Edition 11g

  5. Wyzwalaj alternatywy dla dwóch tabel, które muszą się wzajemnie aktualizować