sql >> Databáze >  >> RDS >> Oracle

jak může můj skript SQL určit, zda běží v sqldeveloper nebo sqlplus?

Nejsem obeznámen s chybou velikosti řádků SQL Developer, takže si nejsem jistý, jaký by měl být konečný výsledek. Můžete však použít sys_context pro toto:

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

Což dává:

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

... nebo:

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

Takže si můžete přizpůsobit to, co máte, 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 poté otestujte pomocí

show linesize

což dává linesize 500 v SQL*Plus a linesize 5 v SQL Developer.

Pokud možná ještě nejste připojeni v SQL*Plus, definujte nejprve hodnotu; pro skrytí chyby před select ani nemusíte dělat nic zvláštního za set termout off , i když můžete zahrnout whenever sqlerror jen pro případ, že váš login.sql nastavuje jej na ukončení – ale pak možná budete muset vědět, abyste jej poté resetovali.

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 hodnota ji přepíše, pokud bude výběr úspěšný, a nedotkne se, pokud selže. Pokud to dám do souboru s názvem client.sql a spusťte jej jako:

sqlplus -s /nolog @client

Dostávám pouze tento výstup:

linesize 500

A totéž běží v SQL Developer, dává linesize 5 znovu.



  1. Oracle Trigger ORA-04098:Trigger je neplatný a opětovné ověření se nezdařilo

  2. Co když smažu ibdata1 v mysql (LINUX)

  3. AUTOMATICKÉ VYMAZÁNÍ ŘÁDKU 1 den po vložení (MySQL)

  4. Jak najít a nahradit text v databázi MySQL pomocí SQL