|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 336
|
[oracle] come chiamare una procedura ogni giorno a mezzanotte
Ciao.
Come da titolo, volevo eseguire ogni notte una procedura che deve analizzare alcune procedure inserite in un'apposita tabella oracle e che deve settarle come scadute se non sono state modificate negli ultimi giorni. Come posso farlo? Esistono dei trigger a tempo o no? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Esistono.
Ma il consiglio che ti do e' quello di non usarli, per evitare complicazioni ai sistemisti di turno. Ti consiglio di usare il comando AT, oppure le operazioni pianificate (che sono praticamente la stessa cosa) sotto Windows. Oppure un Crontab se sei sotto unix. In questo modo tutti sanno metterci le mani sopra. Il comando da eseguire e' ovviamente semplice: SQLPLUS autenticazione script.sql
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quoto, non usare i trigger.
Schedula un job da qualche parte (oracle/SO) come ti ha già risposto gugoXX
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 336
|
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Questo mestiere non si puo' fare con i trigger del database. Si puo' fare con i JOB del database, ma per i motivi di cui prima ti sconsiglierei di usare i JOB interni del database. Comunque se proprio li vuoi usare lprendi spunto da qui Codice:
declare
vJobNumber binary_integer;
begin
dbms_job.submit(
job => vJobNumber,
next_date => to_date('23:45', 'HH24:MI'),
interval => 'SYSDATE + 2',
what => 'begin UpdateEmp(20, 100); end;'
);
end;
Insomma, poiche' mi sembra di aver capito che non devi fare cose strane, ti riconsiglio di usare i job del sistema operativo su cui sei. I Job Oracle sono usati internamente dai tool Oracle come il WorkFlow o WarehouseBuilder. Non ho mai incontrato nessuno che li abbia usati direttamente, anche se si puo' tranquillamente fare.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 336
|
Avevo frainteso.
Avevo capito che sconsigliassi solo di usare i trigger. Ok. Allora mi farò un bel file sql con la mia query e poi la farò eseguire col comando SQLPLUS come mi hai consigliato nel primo post. Ciao e grazie ancora |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Un job oracle nel mio caso è la soluzione più semplice perchè: a) l'importazione dei dati viene lanciata da una web app e b) devo parlare con una persona sola (il DBA) e non con N (il sistemista di turno + DBA). Cmq come ogni cosa dipende dalle specifiche esigenze...
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:16.



















