sql >> Databasteknik >  >> RDS >> Oracle

hur kan mitt sql-skript avgöra om det körs i sqldeveloper eller sqlplus?

Jag är inte bekant med en SQL Developer-linjestorleksbugg, så jag är inte säker på vad slutresultatet ska bli. Men du kan använda sys_context för detta:

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

Vilket ger:

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

... eller:

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

Så du kan anpassa det du har som:

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

Och testa sedan med

show linesize

vilket ger linesize 500 i SQL*Plus och linesize 5 i SQL Developer.

Om du kanske inte är ansluten ännu i SQL*Plus, definiera bara värdet först; du behöver inte ens göra något speciellt för att dölja felet från select bortom den set termout off , även om du kan inkludera en whenever sqlerror bara ifall din login.sql ställer in den på att avsluta - men då kanske du måste veta för att återställa den efteråt.

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 värdet kommer att åsidosätta det om valet lyckas, och inte röra det om det misslyckas. Om jag lägger det i en fil som heter client.sql och kör det som:

sqlplus -s /nolog @client

Jag får bara denna utdata:

linesize 500

Och samma sak körs i SQL Developer, vilket ger linesize 5 igen.



  1. Oracle RAC VIP och ARP Primer

  2. drupal sql villkorliga klausuler för flera tabeller?

  3. Hämta bild från databasen i asp.net

  4. Vilka är de bästa lösningarna för kända problem med Hibernates schemavalidering av flyttalskolumner när du använder Oracle 10g?