Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Oracle dbms_job.submit

Empfohlene Antworten

Veröffentlicht

hi

hab hier eine tabelle test mit 2 spalten

oid und beschreibung

create tabel test

(

oid integer,

beschreibung varchar2(50)

);

und ich möchte jetzt über dem dbms_job.submit() eine proecude ausführen die einen datensatz in dieser testtabelle aktualisiert(ist 1 datensatz drin mit oid = 1).

das starten des jobs passiert, ich krig ich eine job-id. aber es passiert nichts.

hier min code:


create or replace procedure blabla is

begin

   update test set bezeichnung ='hiho' where oid = 1;

   commit;

end;

/ 


set serveroutput on;

declare

nr integer;

begin

  dbms_job.submit(job => nr,

                  what =>'BEGIN blabla; END;',

                  next_date => sysdate);

end;

/

eigentlich sollte der beschreibungstext jetzt geändert sein, ist er aber nicht. es passiert augenscheinlich nichts.

Nach dem submit musst Du ein commit ausführen. Mit deinem next Wert wird der Job allerdings ständig neu gestartet willst Du das wirklich?

Falls Du 10g verwendest, solltest Du auch prüfen, ob Du dbms_scheduler verwenden kannst/möchtest.

Dim

ok,

das ist ne aufgabe von der uni, man soll submit() verwenden. ist glaub ich 11g sogar.


begin  


dbms_job.submit (job =>        v_jobno,              

                 what =>      'testjob;', 

                 next_date => sysdate,

                 interval  => 'sysdate + numtodsinterval(5,''minute'')'

                );

   dbms_output.put_line('Jobnumber: ' || v_jobno);

   dbms_job.run (v_jobno);

  commit;

end;

/

es funktioniert den job zu starten wenn ich explizit run(job-id) ausführe. Wenn nicht tut sich da allerdings gar nicht. Ich kann nicht ausschließen das da noch irgendwo was falsch eingestellt ist, die uni hat erst vor kurzem auf 11g gewechselt - wäre es denkbar das da noch was falsch eingestellt ist? meinen job seh ich unter den user_jobs, der intervall ist ebenfalls korrekt eingetragen. einmalig ausführen funktioniert nur mit run(). Aber der intervall greift gar nicht. hier ist ein kompletter testfall, der wohl funktionieren soll (bei mir nicht) (in der tabell test den Beschreibungstext updaten) - relativ sinnfrei, nur ein beispiel halt.

drop table test;

create table test

(

oid integer,

beschreibung varchar2(50)

);

insert into test values (1, 'asdf');

insert into test values (2, 'lalalalla');

commit;


create or replace procedure testjob is

begin  

 update test set beschreibung ='hiho' where oid = 1;   

 commit;

 exception

  when others then

       raise_application_error(-20001, 'Procedure testjob caused an ERROR!! Message: '||sqlerrm);

end;

 /

show errors; 



set serveroutput on;


declare

v_jobno binary_integer;

v_interval varchar2(20) := 'sysdate+1/(24*60)'; 

begin  

dbms_job.submit (            

  v_jobno,                   

  'testjob;',       

  sysdate,                 

  v_interval);            

  dbms_output.put_line('Jobnummer: ' || v_jobno || 'Interval: '|| v_interval);

  commit;

end;

/

show errors

klappt bei mir wieder nur wenn ich run() einfüge, der intervall klappt aber auch hierbei nicht.

noch eine idee?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.