Bonjour,
Je dois créer un script sh qui appelle une procédure SQL. Le résultat de la procédure doit être récupérer et renvoyer dans un fichier dont le chemin sera spécifier.
Je suis vraiment nouveau en sh, j'en ai fait il y a plusieurs année durant mes études mais je n'en ai plus aucun souvenir.
Bref, je suis arrivé à construire ceci pour le moment :
Seulement je ne suis pas sûr des dernières lignes...
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 #exit 0 #!/bin/ksh ############################################################################# # # Generate csv file to UPDATE DELAIS and send result to a shared folder # # Transfer by FTP the file in transfer/out/partners/IND_DELAIS*.xml # # If success, remove LOG files AND csv file # Nota : # FTP codes used to check if the transfer is OK or NOK are : # '200 PORT' # '150 Opening' # '226 Transfer' # # - Transfer by FTP and check # ############################################################################# #### Directory of SQL procedure ACCES=`dirname $0` if [ $0 = `basename $0` ] then tst=`type $0 | awk '{print $NF}'` [ -z "$tst" ] && tst="not found" if [ $0 = `basename $tst` ] then tst=`type $0 | awk '{print $NF}'` ACCES=`dirname $tst` else ACCES="." fi fi if [ "$ACCES" = "." ] then ACCES=`pwd` else deb=`echo $ACCES | sed -e "s/\(.\).*/\1/"` if [ "X$deb" != "X/" ] then ACCES=`pwd`/$ACCES fi fi #### #### KPI_DELAYS_ENV_PATH=$ACCES . $KPI_DELAYS_ENV_PATH/kpi_delays_export_csv.sh VAR=$(sqlplus /NOLOG <<! connect E760/E760@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST=***)(PORT=1521))(CONNECT_DATA = (SID = ***)))@PA_IND_DELAYS_BODY.sql; !) result=`sqlplus / <<SCRIPT| grep ^result | sed "s/^result: //" set serveroutput on declare var_truc_result VARCHAR2(255); begin export_csv($0,$1); dbms_output.put_line( 'result: ' || var_truc_result); end; / exit SCRIPT` echo var_truc_result is: $result SHARED_FOLDER_PATH=$ACCES . $SHARED_FOLDER_PATH/TEST_FOLDER $RESULT * >$SHARED_FOLDER_PATH/
En effet la procédure SQL se nomme export_csv() et prend deux paramètres en entrée.
J'ai créé un dossier de test nommé TEST_FOLDER, je spécifie son emplacement et j'exécute une commande que j'ai trouvé sur le net pour diriger les résultats vers ce dossier.
Voici les erreurs :
Mise à part les erreurs, je dois sûrement mal m'y prendre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Try `dirname --help' for more information. D:\Sopra\workspace_Visual_Studio\Evpt\EVPT\EVPT v3\Database\Scripts\005-KPIDelay\kpi_delays_export_csv.sh: line 22: [: too many arguments D:\Sopra\workspace_Visual_Studio\Evpt\EVPT\EVPT v3\Database\Scripts\005-KPIDelay\kpi_delays_export_csv.sh: line 48: /d/Sopra/workspace_Visual_Studio/Evpt/EVPT/EVPT: No such file or directory var_truc_result is: D:\Sopra\workspace_Visual_Studio\Evpt\EVPT\EVPT v3\Database\Scripts\005-KPIDelay\kpi_delays_export_csv.sh: line 69: /d/Sopra/workspace_Visual_Studio/Evpt/EVPT/EVPT: No such file or directory D:\Sopra\workspace_Visual_Studio\Evpt\EVPT\EVPT v3\Database\Scripts\005-KPIDelay\kpi_delays_export_csv.sh: line 71: 1: ambiguous redirect
Si vous avez des remarques, je suis preneur
Merci !
Partager