Domanda

Ho uno script SQL che è in esecuzione in rospo. Attualmente, l'ho disposto con appena dichiarazione dopo dichiarazione, nel seguente modo:

select such-and-such from somewhere;

delete other-thing from somewhere-else;

E così via. Alcune delle clausole in cui finiscono per essere ripetitivo, perché ho query interne complesse per ottenere particolari ID su cui operare. Mi piacerebbe catturare l'ID all'inizio dello script in una variabile, e quindi utilizzare tale variabile nella successiva in cui le clausole. Quindi, qualcosa di simile a questo:

variable MY_ID = select the-ID from somewhere;

select such-and-such from somewhere where ID = @MY_ID;

Ovviamente, sto facendo up che la sintassi, ma che è quello che sto cercando. Ma non sono sicuro se questo è possibile, in uno script rospo. So che posso convertire il tutto ad un blocco PL / SQL, ma sto cercando di evitare di dover fare questo per vari motivi.

Un modo per farlo utilizzando ROSPO senza convertire ad un blocco PL / SQL?

È stato utile?

Soluzione

Credo che questo porterà a compimento ciò che si desidera. È possibile dichiarare una variabile bind, inserire un valore in esso, e poi usarlo nelle dichiarazioni future.

variable l_var varchar2(1);

begin
  select dummy
    into :l_var
    from dual;
end;

select *
  from dual
 where dummy = :l_var;

Altri suggerimenti

Io uso le variabili SQL * Plus di sostituzione. Essi sono sostenuti da rospo. È possibile eseguire questo codice premendo F5.

COLUMN VAR NEW_VALUE VAR_VALUE

SELECT 'SOMETHING' VAR FROM DUAL;  --this sets 'VAR_VALUE' = 'SOMETHING'

SELECT '&VAR_VALUE' FROM DUAL;  --this uses the value set by the previous stmt.

non uso più attivamente ROSPO, ma ci dovrebbe essere qualche meccanismo per fissare i valori per i parametri bind IE select such-and-such from somewhere where ID = :myid; tale che ogni volta che si verifica TOAD fornisce lo stesso valore per quel parametro.

In alternativa, è possibile creare un valore di contesto di sessione o / variabile PL SQL pacchetto (nota: non è la stessa cosa di riscrivere l'intero codice per utilizzare PL / SQL). Vedi questa domanda

La funzione di "campi calcolati" in Toad è in realtà molto potente se usato nel modo giusto. Non è niente di più di un editor di script "token" che si attacca alla query stessa. E 'disponibile solo tramite la query Editor, e non dal Editor nativo, che consente di scrivere dritto su SQL.

Come un suggerimento, la prossima volta si crea una query Progettato in ROSPO e la necessità di creare complessi in cui o sub-query, provare la funzione di "campi calcolati" e utilizzare l'opzione FORME per fissare sostanzialmente le vostre condizioni per una data colonna o una query . Sarete sorpresi di quanto sia potente. E aiuta a mantenere la query SQL in un formato leggibile bello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top