Bonjour,
Je fais des tests en ce moment en PL/SQL et je suis très embêté avec le package DBMS_SCHEDULER. J'essaye d'insérer dans une table la valeur SYSDATE avec un format comportant heures, minutes et secondes. Pour cela je fais un select sysdate from dual avec le bon format, je stocke le résultat dans une variable et c'est là que les ennuis commencent.
Voici le code de mon fichier .sql :
J'utilise dbms_output.put_line pour être sur que la variable est bien formatée : c'est OK.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 set serveroutput on DECLARE var_s_sysdate VARCHAR2(50); BEGIN select to_char(sysdate, 'DD-MON-YYYY HH24:MI:SS') INTO var_s_sysdate from dual; -- dbms_output.put_line('DATE = '||var_s_sysdate); DBMS_SCHEDULER.DROP_JOB('PLSQL04'); DBMS_SCHEDULER.CREATE_JOB( job_name => 'PLSQL04', job_type => 'PLSQL_BLOCK', job_action => 'insert into util1.essai values (var_s_sysdate) ;', repeat_interval => 'FREQ=SECONDLY;INTERVAL=10'); END; /
J'ai ensuite activé le job comme le prouve la commande ci-dessous : les variables ENABLE et STATE sont bien renseignées.
MAIS quand je fais un select * from util1.essai, je n'ai rien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SQL> select JOB_NAME, JOB_ACTION, ENABLED, STATE, REPEAT_INTERVAL from USER_SCHEDULER_JOBS where job_name = 'PLSQL04'; JOB_NAME ------------------------------ JOB_ACTION -------------------------------------------------------------------------------- ENABL STATE ----- --------------- REPEAT_INTERVAL -------------------------------------------------------------------------------- PLSQL04 insert into util1.essai values (var_s_sysdate) ; TRUE SCHEDULED FREQ=SECONDLY;INTERVAL=10
Je pense que le problème vient du fait que j'utilise une variable dans le paramètre job_action.
job_action => 'insert into util1.essai values (var_s_sysdate) ;',
Voilà, si vous avez des idées, je suis preneur :-)
Partager