Zaccaria
2006-03-21 13:57:50 UTC
Ciao a tutti
ho un problema di questo tipo: per aggiornare i dati in una tabella in
qusto momento stò seguendo questa
strada, creo la tabella, creo una view con la struttura di selezione
desiderata e poi faccio una procedura del tipo
INSERT INTO NOME_TABELLA
SELECT * FROM NOME_VIEW;
COMMIT;
Mi chiedevo se non esiste il modo di saltare il passaggio della view
creando una procedura che utilizzi i cursori espliciti del tipo
rec_a nome_tabella%ROWTYPE; -- record contenente le righe
CURSOR cur_a IS -- cursore contenente tutta la selezione
SELECT [....]
BEGIN
OPEN cur_a;
LOOP
FETCH cur_a INTO rec_a;
EXIT WHEN cur_a%NOTFOUND;
INSERT INTO nome_tabella (campo1,campo2,....,campoN)
VALUES (rec_a.campo1, rec_a.campo2,....., rec_a.campoN);
END LOOP;
CLOSE cur_a;
Il risultato però è un errore "ORA-03113 end-of-file sul canale di
comunicazione" con successivo log out dal database!!!!
Non ci capisco una mazza!
Lavoro su Oracle 7.3.4 su Solaris
Grazie 1000
Zacc
ho un problema di questo tipo: per aggiornare i dati in una tabella in
qusto momento stò seguendo questa
strada, creo la tabella, creo una view con la struttura di selezione
desiderata e poi faccio una procedura del tipo
INSERT INTO NOME_TABELLA
SELECT * FROM NOME_VIEW;
COMMIT;
Mi chiedevo se non esiste il modo di saltare il passaggio della view
creando una procedura che utilizzi i cursori espliciti del tipo
rec_a nome_tabella%ROWTYPE; -- record contenente le righe
CURSOR cur_a IS -- cursore contenente tutta la selezione
SELECT [....]
BEGIN
OPEN cur_a;
LOOP
FETCH cur_a INTO rec_a;
EXIT WHEN cur_a%NOTFOUND;
INSERT INTO nome_tabella (campo1,campo2,....,campoN)
VALUES (rec_a.campo1, rec_a.campo2,....., rec_a.campoN);
END LOOP;
CLOSE cur_a;
Il risultato però è un errore "ORA-03113 end-of-file sul canale di
comunicazione" con successivo log out dal database!!!!
Non ci capisco una mazza!
Lavoro su Oracle 7.3.4 su Solaris
Grazie 1000
Zacc