Oracle
 sql >> база данни >  >> RDS >> Oracle

как мога моят sql скрипт да определи дали работи в sqldeveloper или sqlplus?

Не съм запознат с грешка в размера на линията на SQL Developer, така че не съм сигурен какъв трябва да бъде крайният резултат. Но можете да използвате 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 в SQL Developer.

Ако все още не сте свързани в 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 отново.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ORA-01805 в база данни Oracle 11g

  2. (PLSQL) Кой е най-простият израз за тестване за променена стойност в тригер на Oracle при актуализиране?

  3. Lighty накратко

  4. SQL Developer 4.1.2

  5. Как да извлечете номера на седмицата в sql