Bonjour,
Je suis en train de porter une procedure d'Informix vers Oracle. Celle-ci lance un script shell, et je dois donc faire la meme chose (non, je ne peux vraiment pas changer).
En informix, la commande etait "simplement"
Pour PL/SQL, j'ai trouve le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SYSTEM ("/mon/script/qui/va/bien.sh arg1 arg2")
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
19
20
21
22
23
24
25
26
27
28
29
30
31 CREATE OR REPLACE PROCEDURE test_dbms_scheduler AS v_text VARCHAR2 (255) := 'Parameter passed from Oracle to Unix'; BEGIN DBMS_OUTPUT.put_line ('I am in Procedure'); DBMS_SCHEDULER.create_job ( job_name => 'test_dbms_scheduler', job_action => '/usr/bin/test_dbms_scheduler.ksh', number_of_arguments => 1, job_type => 'executable', start_date => SYSDATE, enabled => FALSE, comments => 'Run shell-script test_dbms_scheduler.ksh' ); DBMS_SCHEDULER.set_job_argument_value (job_name => 'test_dbms_scheduler', argument_position => 1, argument_value => v_text); DBMS_SCHEDULER.enable ('test_dbms_scheduler'); DBMS_OUTPUT.put_line ('I am back in Procedure'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line (SQLCODE || SQLERRM); END;
A force de regarder, je me suis rendu compte que create_job n'etait pas forcement ideal, et sur cette page, j'ai trouve create_program, qui semble plus adapte a mon cas, mais qui ne semble pas plus cooperative sur le nombre de caracteres que je peux lui fournir.
D'ou mes questions :
1/ Est-ce que c'est la bonne maniere pour lancer un script depuis une procedure (attention, je ne demande pas si cette idee est bonne, je connais tres bien la reponse) ?
2/ Est-ce qu'il y a 100 fois mieux ?
Merci,
Gangsoleil
[edit] J'ai resolu mon probleme de ligne trop longue, qui existait a cause de l'emploi de " au lieu de '
PS : je suis ouvert a toutes les propositions tant que ca reste une procedure
PPS : N'hesitez pas etre complet dans vos reponses, je ne suis pas vraiment un specialiste PL/SQL - a moins que ca ne soit "vraiment pas"...
Partager