Bonjour,

J'ai une petite question.

Je voudrais exécuter une requêtes pl/sql oracle du type :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Select max(run_id) from maTable.
Et placer le résultat dans une variable ksh.

La solution actuelle est la suivante : On passe via une requête sqlplus, et 2 fichiers temporaire (un fichier avec la requête sql et un fichier pour le résultat).

Ensuite on doit lire le fichier de résultat pour attribuer la valeur à la variable.

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
sql_file=${FILE_BEGIN}.sql
cat << __EOF__ > ${sql_file}
    SET SERVEROUTPUT ON
    DECLARE
        v_id NUMBER(38);
    BEGIN
        SELECT MAX(run_id) INTO v_id FROM maTable;
        DBMS_OUTPUT.PUT_LINE(v_id);
    EXCEPTION
        WHEN OTHERS
        THEN
            DBMS_OUTPUT.put_line ('ERROR : [' || SQLERRM || ']');
    END;
    /
    EXIT;
__EOF__
sqlplus -s ${DB_LOGIN}/${DB_PASSWORD} @$sql_file >> ${TMPFILE}
rm -f ${sql_file}
#Lecture du fichier de résultat temporaire
rm -f ${TMPFILE}
Le problème est que je trouve toute cette démarche assez lourde je voudrais savoir si on peut arriver à quelque chose du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Select max(run_id) INTO $RUNID from maTable
ou encore :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
RUNID = Select max(run_id) from maTable
Ou une requête semblable.

Merci.