Voglio creare tabella temporanea in stored procedure e l'accesso nella stessa, ma ho ottenuto l'errore che ORA-00942:Table or view does not exists.
seguito è la procedura che ho provato,Come creare e utilizzare la tabella temporanea nella procedura memorizzata Oracle?
Create procedure myproc
IS
stmt varchar2(1000);
BEGIN
stmt:='CREATE GLOBAL TEMPORARY table temp(list if columns) ON COMMIT DELETE ROWS';
execute immediate stmt;
insert into temp values('list of column values');
END;
Questo è il modo che ho usato per creare tabella temporanea, ma Ho un errore, c'è un altro modo per eseguire questo compito?
@ la risposta di tbone mostra cosa dovresti fare, ma per spiegare cosa stai vedendo: non puoi farlo perché al momento della compilazione della procedura 'temp' non esiste ancora. Il compilatore non tenta di analizzare l'SQL dinamico, non ultimo perché non ha idea se funzionerà in fase di runtime. L'unico modo in cui questo approccio funzionerebbe è se l'inserto fosse anch'esso convertito in SQL dinamico; ma questo non è il modo in cui le tabelle temporanee funzionano in Oracle, quindi non farlo in questo modo. –
@Alex Poole: Grazie –
possibile duplicato di [Tabella temporanea locale in Oracle 10 (per l'ambito della stored procedure)] (http://stackoverflow.com/questions/1192265/local-temporary-table-in-oracle-10 -per-the-scope-of-stored-procedure) – APC