2012-07-23 13 views
9

Sto convertendo uno script MSSQL in Oracle e non sono stato in grado di calcolare la sintassi per utilizzare una variabile al posto di un nome di tabella o di una colonna.Oracle SQL: variabili utilizzate al posto dei nomi di tabella

Ecco un semplice esempio che sono stato cerco di fare il lavoro in Oracle SQL Developer in modo da poter capire meglio la sintassi:

set serveroutput on format wrapped; 
declare 
    VR_TABLE VARCHAR2(256); 
    VR_UPDATE VARCHAR2(256); 
begin 
    VR_TABLE :='SYSTEM_STATUS'; 
    EXECUTE IMMEDIATE 'select UPDATE_VERSION INTO VR_UPDATE from ' || VR_TABLE || 'where rownum < 2 ;' 
end; 

Dove VR_TABLE è il nome della tabella variabile che andranno cambiate ogni iterazione del ciclo. Qualcuno può indicare cosa sto facendo male o collegarmi a un sito che sarebbe utile per me leggere? Ho letto alcuni tutorial su questo, ma finora non ho avuto fortuna.

risposta

15
  1. È necessario disporre di uno spazio tra il nome della tabella e il successivo WHERE clausola di
  2. Le INTO deve essere parte del EXECUTE IMMEDIATE, non fa parte della istruzione SQL dinamico.
  3. L'istruzione SQL dinamico non dovrebbe avere un punto e virgola finale
  4. Il EXECUTE IMMEDIATE dichiarazione deve terminare con un punto e virgola

mettere quelle insieme, qualcosa di simile a questo dovrebbe funzionare

declare 
    VR_TABLE VARCHAR2(256); 
    VR_UPDATE VARCHAR2(256); 
begin 
    VR_TABLE :='SYSTEM_STATUS'; 
    EXECUTE IMMEDIATE 'select UPDATE_VERSION from ' || VR_TABLE || ' where rownum < 2' 
       INTO VR_UPDATE; 
end; 

Naturalmente, poiché non stai facendo nulla con VR_UPDATE, nulla verrà visualizzato quando viene eseguito questo blocco anonimo.

Problemi correlati