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

PL/SQL Oracle Discussion :

Appeler une procédure stockée en fonction de fichiers


Sujet :

PL/SQL Oracle

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut Appeler une procédure stockée en fonction de fichiers
    Bonjour,

    J'ai une question un peu bizarre que je ne sais pas trop dans quel forum mettre. Désolé si je n'ai pas fais le bon choix

    Je dois parcourir 1 ou plusieurs répertoires récursivement pour aller chercher certains fichiers.
    En fonction du contenu de ces fichiers et de valeurs dans la base, je dois ou pas lancer une procédure stockée.
    Je m'interroge sur la méthode à utiliser. L'applicatif est sous .Net et la base est une 11g. La quantité de fichiers à traiter est très variables, de 1 à quelques milliers.

    J'ai pensé à 2 possibilités :
    1. Scanner les répertoires avec la couche applicative en .Net, lire les fichiers, interroger la base à l'aide d'un code PL/SQL qui aurait en paramètre in les valeurs utiles au test et qui lancerait la procédure stockée.
      Donc les aller-retours entre .Net et Oracle se ferait pour chacun des fichiers lus
    2. Lancer depuis la couche applicative en .Net une fonction Java contenue dans Oracle qui scannerait les répertoires et lirait les fichiers, puis testerait s'il faut ou pas lancer la procédure stockée.
      Il n'y aurait qu'un "aller-retour" entre .Net et Oracle mais des échanges Java - PL/SQL

    Qu'en pensez-vous ? Laquelle est la mieux, ou la moins pire ?
    Ou y a-t-il une autre option à laquelle je n'ai pas pensé ?

    Merci de votre aide

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Ça fait plaisir de lire une question clairement posée !

    La première formule ne me paraît pas choquante dans la mesure où il n'y aurait pas d'échange de données entre le client et le serveur.
    Cependant, les changements de contexte entre PL/SQL et Java sont probablement moins coûteux que les échanges réseau, et à ce titre la deuxième formule aurait ma préférence.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    La structure de vos fichiers est homogène ?
    Où ces fichiers se trouvent: sur le serveur de base des données, sur le serveur d'appli ?
    Ces N fichiers d'origine peuvent être concaténés et traitées d'un seul coup ?

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    @Pomalaix
    Je me dis que plus c'est clair, moins il y a d'échanges avant d'avoir une réponse, et plus la réponse est précise !

    Je pensais un peu la même chose en ce qui concerne les échanges.
    Je ne connais pas java ni comment l'utiliser avec Oracle mais je me dis que pour ce que j'ai à faire, je vais trouver facilement sur le net.
    Et puis, j'essaye toujours de glisser quelques % d'inconnus dans un projet, histoire de progresser. J'ai toujours fonctionner comme cela jusqu'à maintenant

    @mnitu
    La structure des fichier est homogène
    Les fichiers ont toujours la même forme mais ils peuvent être à des endroits différents. C'est pour cela qu'il va y avoir le chemin absolu du répertoire à traiter en entrée.
    Il me parait difficile de concaténer les fichiers

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Si vos fichiers se trouvent sur le serveur de base des données vous devez/pouvez utiliser des tables externes.
    D'autre part je me demande si votre besoin n'est pas de type événement déclencheur: une application externe dépose un fichier dans un répertoire et ça déclenche un traitement dans la base.

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    J'ai pensé aux tables externes mais comme il y a de nombreux répertoires différents avec des racines différentes, ca ne va pas être possible de créer tous les directory Oracle.

    Effectivement, ca ressemble à ca. Je peux peut-être voir du côté du déclencheur.
    je vais creuser.

  7. #7
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Nouveauté Oracle 11g

    Le process peut être natif coté base avec les filewatchers
    http://docs.oracle.com/cd/E18283_01/...tm#insertedID3
    Garuda गरूड
    Brahmâ la Guerre et Vishnu la Paix

    Oracle 12C R2 - Forms11GR2 - Toad 12 - sharePoint 2010

  8. #8
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Points : 130
    Points
    130
    Par défaut
    Ah oui
    Je ne connaissais pas. Je vais étudier ça
    Merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/02/2011, 09h34
  2. Appeler une procédure stockée depuis une fonction
    Par FMJ dans le forum Développement
    Réponses: 4
    Dernier message: 07/04/2009, 21h04
  3. Réponses: 3
    Dernier message: 17/01/2006, 17h12
  4. Update appelant une procédure stockées
    Par meufeu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/10/2005, 18h31
  5. [appeler une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 10/03/2005, 22h38

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