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

Linux Discussion :

Récupérer valeur dans une BD


Sujet :

Linux

  1. #1
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Récupérer valeur dans une BD
    Bonjour,

    J'ai créé une base de données dont la table de plus haut niveau a un PK défini comme numéro automatique.

    Je travaille sous Unix SUSE 9.0 avec postgreSQL.

    Je voudrais récupérer la PK à chaque fois qu'une entrée est créée. Cela est-il possible? Comment enregistrer cette valeur dans une variable définie ($PK par exemple)?

    Merci

    Mat

  2. #2
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut Définir variable environnement
    Bonjour,

    J'ai réussi à récupérer la valeur de la PK en écrivant tout simplement dans un fichier le résultat de la requête et en lisant le fichier.

    Maintenant, je voudrais déclarer cette variable comme variable d'environnement. Je suis sous PERL.

    je sais que pour récupérer une variable d'environnement on fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $var = $ENV{'nom_var'}
    et je croyais qu'une simple inversion marcherai

    mais ce n'est pas le cas...

    Savez-vous comment on déclare une nouvelle variable d'environnement à partir d'un script PERL?

    Merci par avance,

    MAt

  3. #3
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Dans quel but tu veux utiliser les variables d'environnement ?
    Au pire, tu peux toujours faire quelque chose dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("set nomvar=$var)
    Mais si tu voulais seulement récupérer la valeur de la PK suite à l'insert, pourquoi ne pas utiliser une procédure stockée ?
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  4. #4
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    En fait il faut que je récupère la PK car c'est un numéro incrémental.

    Je m'explique un peu plus, je dois créer une table contenant cette PK. Les données des autres tables sont ensuites lues dans un fichier binaire, puis je crée un fichier ASCII pour pouvoir lire les données et les intégrer dans la BD.

    La lecture de la PK se fait dans un petit script perl, et un autre script perl crée le fichier exploitable par la BD. J'ai également besoin de ce numéro pour pouvoir créer une arborescence, certains répertoires doivent être numérotés, et cela avec un shell UNIX.

    L'intérêt pour moi de déclarer la PK en variable d'envireonnement est que je puisse y accéder de mes différents scripts facilement. Cette solution me paraissait la plus logique, mais en vois-tu une autre mieux adaptée?

    Mat

  5. #5
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Ok, je comprends mieux pourquoi tu veux faire comme ça.

    Moi je mettrais la valeur de la PK dans un fichier, et chaque processus irait lire ce fichier.
    Une autre solution serait de passer la valeur en paramètre de tes scripts qui en ont besoin. C'est pas forcément faisable, ça dépend quand et comment les scripts sont appelés.

    Le problème avec les variables d'environnement, c'est qu'elles ne sont visibles qu'à l'instance de shell dans laquelle tu exécutes ton script. Du coup, si le deuxième script utilise un autre shell, tu "perds" ta variable.
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  6. #6
    Membre du Club Avatar de Matmal11
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    Ok,

    Le problème est que je ne sais pas récupérer la valeur dans un fichier à partir d'un shell unix. Jusqu'à maintenant, j'utilisais un script perl.
    J'apelle le script perl depuis un shell unix et je ne sais pas si je peux avoir une valeur de retour (cela me parait impossible).

    Sinon, dans le fichier de lecture, la structure est celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    pk_nom_de_table
    -----------------
                         1
                         2
                         ...
                         n
    (n rows)
    Est-ce possible de lire ce fichier avec un shell et d'en sortir la valeur la plus élevée?
    Ou dois-je créer un autre fichier dans lequel je viendrais écrire ma valeur la plus élevée (c'est ce que fait déjà mon script perl), et dans ce cas-là, comment lit-on un fichier depuis un shell unix???

    Merci

    Mat

  7. #7
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Le mieux serait que tu ouvres un fichier dans ton script Perl, que tu y inscrives la valeur de PK, et que tu refermes le fichier. Je n'ai plus la syntaxe en tête, mais ça se trouve facilement (sans doute dans la FAQ, ou alors via Google).

    Mais tu peux aussi simplement écrire la valeur de PK sur la sortie standard, et utiliser les opérateurs de redirections Unix pour stocker le résultat dans ton fichier.

    Si tu veux récupérer la valeur la plus élevée de ta colonne, le mieux est de laisser faire ton SGBD, avec par exemple une requête SQL du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT max(pk_nom_de_table) FROM nom_de_table;
    Si tu as créé un fichier qui ne contient que la valeur du PK, et que tu veux le lire, ou l'utiliser dans un script shell, tu peux utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_var=`cat nom_du_fichier`
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

Discussions similaires

  1. Récupérer valeur dans une variable globale
    Par zdig10 dans le forum VB.NET
    Réponses: 5
    Dernier message: 23/09/2011, 11h49
  2. Récupérer valeurs dans une fonction
    Par Touny dans le forum VBScript
    Réponses: 1
    Dernier message: 30/06/2011, 16h13
  3. Récupérer valeur dans une grille
    Par BqiKo dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 04/05/2010, 09h50
  4. récupérer valeur dans une class
    Par members dans le forum Débuter avec Java
    Réponses: 17
    Dernier message: 30/08/2009, 14h10
  5. [AC-2003] Macro - Récupérer valeur dans une requête
    Par damsmut dans le forum Modélisation
    Réponses: 5
    Dernier message: 16/06/2009, 16h17

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