IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Résultat requête pl/sql to variable ksh


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 101
    Par défaut Résultat requête pl/sql to variable ksh
    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.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 133
    Par défaut
    Tu peux créer une fonction shell qui regroupera tes commandes.

    Voici celle que j'emploie:
    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
    function _GetSqlRes
    { # Paramètres
      # 1. Chaine de connexion
      # Suivants : requête SQL
      typeset _UsrPwd="$1"
      shift
      echo "WHENEVER SQLERROR EXIT FAILURE
            WHENEVER OSERROR EXIT FAILURE
            SET HEADING OFF
            SET SERVEROUTPUT ON
            SET ECHO OFF
            SET LINESIZE 350
            $*;
            EXIT" | sqlplus -s ${_UsrPwd} | sed -n 's¤ *$¤¤g;s¤^ *¤¤g;/^$/ !p'
    }
    Ensuite, l'utilisation est facile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RUNID=$(_GetSqlRes "${DB_LOGIN}/${DB_PASSWORD}" "SELECT MAX(run_id) FROM maTable")
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 101
    Par défaut
    C'est parfait.

    Merci bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Affichage résultat requête SQL dans page HTML comme un tableau
    Par joxbl dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 14/03/2011, 14h26
  2. Résultat requête paramétrée dans une variable
    Par Jean1010 dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/05/2009, 17h48
  3. [SQL] Résultat requête : présenter séparement colonnes d'un même tableau
    Par PuppeT mAsTer dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 04/07/2006, 14h18
  4. [SQL] Affichage résultat requête dans un tableau, bouton affichage page
    Par megapacman dans le forum PHP & Base de données
    Réponses: 35
    Dernier message: 18/05/2006, 16h42
  5. [PL/SQL] [9i] Variables dans une requête
    Par ftrifiro dans le forum Oracle
    Réponses: 6
    Dernier message: 07/02/2006, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo