Zum Inhalt springen

Oracle dbms_job.submit


toobeee

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...