Vraag & Antwoord

Programmeren

[oracle]

6 antwoorden
  • ik wil graag een trigger op de serverkant zetten die elke dag afgaat, de trigger moet zoeken in een tabel en hij moet de waarden van een veld aanpassen als ze aan een bepaalde voorwaarden voldoen. iemand een idee
  • [quote:a8d330399c="fcgforum"]ik wil graag een trigger op de serverkant zetten die elke dag afgaat, de trigger moet zoeken in een tabel en hij moet de waarden van een veld aanpassen als ze aan een bepaalde voorwaarden voldoen.[/quote:a8d330399c] Alternatieven: - Insert/Update-trigger? - Tabel constraint? - Record constraint? - Oracle script die via e.o.a. automatische functie uitgevoerd wordt (bijvoorbeeld Windows AT/scheduler). Daarbij hangt het ook af of het gewenst is dat andere gebruikers tegelijkertijd mogen lezen en/of schrijven.
  • Is niet erg ingewikkeld. Maak een package aan met een functie die de gewenste functionaliteit voor jou regelt. Het opzoeken en aanpassen van data. Ik neem even aan dat je PL/SQL blocks en packages kunt schrijven. Vervolgens open je SQL-plus en log je in met de user, waaronder je deze acties wilt laten doen. Open notepad en tik de volgende code in: [code:1:16d8f49609] variable job number; begin dbms_job.submit(:job ,'packagenaam.functienaam;' , trunc(sysdate+1) + 3/24 , 'trunc(sysdate+1) + 3/24'); end; / SELECT d.JOB "Job No" , to_char(d.last_date,'dd-mm-yyyy hh24:mi:ss') "Last Run" , to_char(d.next_date,'dd-mm-yyyy hh24:mi:ss') "Next Run" , DECODE(d.BROKEN,'Y','* Broken', DECODE(sign(d.failures),0,DECODE(r.job,null,null,'* Running'), '* Failed - (' || d.failures || ') times')) "Status" , SUBSTR(d.what,1,30) "What" FROM user_jobs d , dba_jobs_running r WHERE d.job = r.job(+) ORDER BY d.job / COMMIT / [/code:1:16d8f49609] De call naar dbms.job_submit voegt een job toe. De eerste parameter is een returnwaarde met het nummer van de job, de tweede de functie die moet worden gestart, de derde de eerste keer dat de job moet worden gerund en tot slot de interval waarop deze moet worden gerund. In mijn voorbeeld is dit dus: param 2: start 'packagenaam.functienaam' param 3: eerste keer op systeemdatum + 1 (morgen) om 3 uur 's nachts param 4: daaropvolgende keren steeds de volgende dag om 3 uur 's nachts. De select daarna geeft een overzicht van alle jobs die zijn toegevoegd voor deze user en of deze al een hebben gedraaid, nog moeten draaien, wanneer en wat de uitkomst was. Tot slot moet je in Oracle deze functionaliteit nog even enablen. Via Instance -- > Database naar Initialization Parameters de volgende waarden aanpassen: * job_queue_processes --> 2 * job_queue_interval --> 60 De eerste geeft aan hoeveel processen op de achtergrong controleren op jobs, de tweede om de hoeveel tijd hij dit doet (sec). Eventueel kan je de laatste op een andere waarde zetten, al naar gelang je behoefte. In dit geval zal de job om maximaal 3:01 gelopen hebben. Greetz, Taz
  • Is niet erg ingewikkeld. Maak een package aan met een functie die de gewenste functionaliteit voor jou regelt. Het opzoeken en aanpassen van data. Ik neem even aan dat je PL/SQL blocks en packages kunt schrijven. Vervolgens open je SQL-plus en log je in met de user, waaronder je deze acties wilt laten doen. Open notepad en tik de volgende code in: [code:1:71575ebcba] variable job number; begin dbms_job.submit(:job ,'packagenaam.functienaam;' , trunc(sysdate+1) + 3/24 , 'trunc(sysdate+1) + 3/24'); end; / SELECT d.JOB "Job No" , to_char(d.last_date,'dd-mm-yyyy hh24:mi:ss') "Last Run" , to_char(d.next_date,'dd-mm-yyyy hh24:mi:ss') "Next Run" , DECODE(d.BROKEN,'Y','* Broken', DECODE(sign(d.failures),0,DECODE(r.job,null,null,'* Running'), '* Failed - (' || d.failures || ') times')) "Status" , SUBSTR(d.what,1,30) "What" FROM user_jobs d , dba_jobs_running r WHERE d.job = r.job(+) ORDER BY d.job / COMMIT / [/code:1:71575ebcba] De call naar dbms.job_submit voegt een job toe. De eerste parameter is een returnwaarde met het nummer van de job, de tweede de functie die moet worden gestart, de derde de eerste keer dat de job moet worden gerund en tot slot de interval waarop deze moet worden gerund. In mijn voorbeeld is dit dus: param 2: start 'packagenaam.functienaam' param 3: eerste keer op systeemdatum + 1 (morgen) om 3 uur 's nachts param 4: daaropvolgende keren steeds de volgende dag om 3 uur 's nachts. De select daarna geeft een overzicht van alle jobs die zijn toegevoegd voor deze user en of deze al een hebben gedraaid, nog moeten draaien, wanneer en wat de uitkomst was. Tot slot moet je in Oracle deze functionaliteit nog even enablen. Via Instance -- > Database naar Initialization Parameters de volgende waarden aanpassen: * job_queue_processes --> 2 * job_queue_interval --> 60 De eerste geeft aan hoeveel processen op de achtergrong controleren op jobs, de tweede om de hoeveel tijd hij dit doet (sec). Eventueel kan je de laatste op een andere waarde zetten, al naar gelang je behoefte. In dit geval zal de job om maximaal 3:01 gelopen hebben. Greetz, Taz
  • oeps, drie keer, sorry
  • oh, het ingetikte in notepad even opslaan als job.sql of zo en runnen in SQL-plus. Was ik ook nog vergeten. Gaat lekker, succes

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.