Warning: count(): Parameter must be an array or an object that implements Countable in /membri/oraclefaq/qa-include/app/format.php on line 384
Aggiornare più schemi in una istanza Oracle - Oracle FAQ - Il forum italiano su oracle
0 voti
1.8k visite
quesito posto in SQL e PLSQL da (120 punti)
cambiato categoria da
Salve,

Dovrei fare l'update di una tabella e modificare un campo (da valore N a valore S). Il problema e che tabella e campo sono replicate su più schemi diversi inseriti nella stessa istanza.

Come potrei fare? Ho provato ad iscrivere una query annidata ma non ha funzionato, avete qualche suggerimento?

Grazie.

1 Risposta

0 voti
risposta inviata da (2.4k punti)
In questo caso devi a mio avviso scrivere query dinamiche da lanciare con execute immediate.

Per non duplicare codice potresti per esempio sfruttare un cursore for loop che fa una query sulla all_tables per table_name e selezionarti l'owner.

All'interno del loop lanci le tue execute immediate con l'update costruito dinamicamente.

Non amo sql dinamico ma non vedo alternative.
commentato da (120 punti)
Grazie per la risposta.
commentato da (120 punti)
Ho provato, ma evidentemente non sono molto ferrato sui cursori, sarebbe possibile un esempio pratico?
Grazie mille.
commentato da (2.4k punti)
Nella DECLARE fai un cursore di questo tipo:
CURSOR mycur IS
SELECT OWNER, TABLE_NAME
FROM all_tables
WHERE table_name = 'nome tabella maiuscolo';

Poi nel BEGIN fai:
FOR res IN mycur LOOP
  EXECUTE IMMEDIATE ...
END LOOP;

Il pezzo dopo execute immediate sarà una stringa sql costruita dinamicamente. Puoi accedere allo schema tramite la variabile res.owner all'interno del loop.

Domande correlate


Warning: count(): Parameter must be an array or an object that implements Countable in /membri/oraclefaq/qa-include/app/format.php on line 384

Warning: count(): Parameter must be an array or an object that implements Countable in /membri/oraclefaq/qa-include/app/format.php on line 384

Warning: count(): Parameter must be an array or an object that implements Countable in /membri/oraclefaq/qa-include/app/format.php on line 384

Warning: count(): Parameter must be an array or an object that implements Countable in /membri/oraclefaq/qa-include/app/format.php on line 384

Warning: count(): Parameter must be an array or an object that implements Countable in /membri/oraclefaq/qa-include/app/format.php on line 384
0 voti
0 risposte 3.2k visite
0 voti
1 risposta 811 visite
quesito posto 21 Agosto 2018 in SQL e PLSQL da brunoalfonsi (120 punti)
0 voti
0 risposte 588 visite
0 voti
0 risposte 6.6k visite
0 voti
0 risposte 546 visite
...