Page 1 sur 1

Créer un job SQL plannifié

Posté : mer. 25 mai 2022, 13:58:36
par damz
Bonjour,

C'est possible d'exécuter à intervalles réguliers une commande SQL qui fait une mise à jour sur une table (par exemple) avec une commande UPDATE, et si oui comment faire ?

J'imagine qu'une partie de la solution se trouve ici, mais je ne sais pas comment y associer une requête SQL
https://www.ibm.com/docs/en/i/7.4?topic ... kjobjs.htm

Merci pour votre aide

Re: Créer un job SQL plannifié

Posté : mer. 25 mai 2022, 14:19:31
par SebastienB
Bonjour,

La question n'est pas très précise.

1°) Attention WRKJOBJS (IBM Advanced Job Scheduler for I) nécessite la licence 5722-JS1.
2°) Une première réponse est "d'encapsuler" la requête dans un RPG.

3°) Le plus important, est-ce vraiment un intervalle de temps le déclencheur de la mise à jour (ou est-ce un autre travail, ou une information dans une autre table, etc...) ?
4°) Existe-t-il une condition (WHERE) à votre requête ? Si oui, est-ce toujours la même ou est-ce des paramètres ?

Sébastien.

Re: Créer un job SQL plannifié

Posté : mer. 25 mai 2022, 14:26:00
par nbonnet
Bonjour,

Pour lancer un UPDATE dans ce cas, le plus simple me semble être par un RUNSQLSTM ou directement RUNSQL, en direct ou dans un CL.

La commande WRKJOBJS permet de gérer les travaux dans Advanced Job Scheduler (AJS), cela dépend donc si vous avez ou non ce produit. C'est avec la commande ADDJOBJS (https://www.ibm.com/docs/en/i/7.3?topic ... djobjs.htm). Un exemple avec l'interface graphique : https://blog.faq400.com/en/system-admin ... ler-for-i/

Sinon ce sera plutôt un WRKJOBSCDE (gérer les travaux planifiés). Ce dernier ne permet cependant pas de définir des fréquences de job en dessous de la journée.
Toutefois, vous pouvez très bien avoir un programme qui re-soumets lui même le travail suivant à intervalle régulier, en utilisant SBMJOB SCDTIME(heure calculée).

Sinon vous avez peut être également un ordonnanceur externe ?

Re: Créer un job SQL plannifié

Posté : mer. 25 mai 2022, 16:25:37
par Gautier DUMAS
Bonjour,

En complément des réponses déjà apportées, il y a aussi le package Open Source "cronie" qui permet d'avoir un cron (comme sous Linux) en environnement IBM i. Une fois l'environnement Open Source installé sur l'IBM i (V7R2 min), la liste des packages est disponible dans le gestionnaire de modules Open Source d'ACS.

Il permet de pouvoir planifier des exécutions de commandes shell (qui elle même peuvent appeler des commandes ou *PGM) à une fréquence donnée jusqu'à la minute.

Re: Créer un job SQL plannifié

Posté : mer. 25 mai 2022, 16:30:01
par damz
Oui ce n'est pas très précis parce que je ne sais pas encore par quel bout prendre le problème.
1/ je crois que je ne l'ai pas
2/ je ne sais pas faire ça donc impraticable
3/ non, il s'agit bien de faire un cron
4/ oui la condition WHERE est toujours la même avec CURRENT_DATE dedans

Merci en tout cas
SebastienB a écrit :
mer. 25 mai 2022, 14:19:31
Bonjour,

La question n'est pas très précise.

1°) Attention WRKJOBJS (IBM Advanced Job Scheduler for I) nécessite la licence 5722-JS1.
2°) Une première réponse est "d'encapsuler" la requête dans un RPG.

3°) Le plus important, est-ce vraiment un intervalle de temps le déclencheur de la mise à jour (ou est-ce un autre travail, ou une information dans une autre table, etc...) ?
4°) Existe-t-il une condition (WHERE) à votre requête ? Si oui, est-ce toujours la même ou est-ce des paramètres ?

Sébastien.

Re: Créer un job SQL plannifié

Posté : mer. 25 mai 2022, 16:37:53
par damz
Alors je n'ai pas AJS je pense
Avec RUNSQLSTM, ça ne règle pas le problème de la planification je crois, si ?
Pour WRKJOBSCDE, il permet de créer un travail planifié ou juste de les gérer ?
Oui, je peux le faire avec Talend ou Spring, mais bon je cherchais une solution plus simple

Merci en tout cas
nbonnet a écrit :
mer. 25 mai 2022, 14:26:00
Bonjour,

Pour lancer un UPDATE dans ce cas, le plus simple me semble être par un RUNSQLSTM ou directement RUNSQL, en direct ou dans un CL.

La commande WRKJOBJS permet de gérer les travaux dans Advanced Job Scheduler (AJS), cela dépend donc si vous avez ou non ce produit. C'est avec la commande ADDJOBJS (https://www.ibm.com/docs/en/i/7.3?topic ... djobjs.htm). Un exemple avec l'interface graphique : https://blog.faq400.com/en/system-admin ... ler-for-i/

Sinon ce sera plutôt un WRKJOBSCDE (gérer les travaux planifiés). Ce dernier ne permet cependant pas de définir des fréquences de job en dessous de la journée.
Toutefois, vous pouvez très bien avoir un programme qui re-soumets lui même le travail suivant à intervalle régulier, en utilisant SBMJOB SCDTIME(heure calculée).

Sinon vous avez peut être également un ordonnanceur externe ?

Re: Créer un job SQL plannifié

Posté : mer. 25 mai 2022, 16:40:33
par damz
Ok, merci pour la piste de cronie, mais je dois faire avec les moyens du bord.
Je garde à l'esprit pour une prochaine fois en tout cas

Merci encore
Gautier DUMAS a écrit :
mer. 25 mai 2022, 16:25:37
Bonjour,

En complément des réponses déjà apportées, il y a aussi le package Open Source "cronie" qui permet d'avoir un cron (comme sous Linux) en environnement IBM i. Une fois l'environnement Open Source installé sur l'IBM i (V7R2 min), la liste des packages est disponible dans le gestionnaire de modules Open Source d'ACS.

Il permet de pouvoir planifier des exécutions de commandes shell (qui elle même peuvent appeler des commandes ou *PGM) à une fréquence donnée jusqu'à la minute.

Re: Créer un job SQL plannifié

Posté : ven. 27 mai 2022, 10:10:48
par Hurri
Personnellement je ne me casserais pas la tête.
Encapsulation dans un RPG (ou Cobol ou C...) et utilisation basique de WRKJOBSCDE.