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

SQL Oracle Discussion :

Générer SQL dynam. dans proc. stocké


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut Générer SQL dynam. dans proc. stocké
    Bonjour,

    Je dispose d'une table AUDIT reprenant pour toutes les transactions d'insert/update une trace si l'opération est un succès.

    La table AUDIT est composée des champs suivants :

    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
     
    -	TABLE : table impactée par la transaction
    -	TYPE TRANSACTION : opération insert, update (et delete à terme)
    -	DATE TRANSACTION : date de l’opération
    -	CLEPRIM1 : nom de la clé primaire 1  
    -	CLEPRIM2 : nom de la clé primaire 2 (null allowed)
    -	CLEPRIM3 : nom de la clé primaire 3 (null allowed)
    -	CLEPRIM4  : nom de la clé primaire 4(null allowed)
    -	CLEPRIM5 : nom de la clé primaire 5(null allowed)
    -	CLEPRIM6 : nom de la clé primaire 6(null allowed)
    -	CLEPRIM7 : nom de la clé primaire 7(null allowed)
    -	VAL1 : valeur de la clé primaire 1
    -	VAL2 : valeur de la clé primaire 2(null allowed)
    -	VAL3 : valeur de la clé primaire 3(null allowed)
    -	VAL4 : valeur de la clé primaire 4(null allowed)
    -	VAL5 : valeur de la clé primaire 5(null allowed)
    -	VAL6 : valeur de la clé primaire 6(null allowed)
    -	VAL7 : valeur de la clé primaire 7(null allowed)
    Mon objectif serait de créer une procédure stockée avec en paramètre IN, le nom d'une table (table X) et le type de transaction (update).

    Dans ce cas, je souhaite que la procédure renvoie grâce aux valeurs de la table AUDIT le résultat du query suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM X where CLEPRIM1&CLEPRIM2 in (....)
    Étant novice sous Oracle, je voulais vous demander si vous pouviez m'aider à coder la partie de procédure qui construirait le SQL présenté ci-dessus en fonction des valeurs de la table AUDIT

    N'hésitez pas à critiquer si vous voyez d'autres solutions permettant de réaliser le même type de travail.


    D'avance, je vous remercie pour toutes réponses éventuelles.

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonsoir,

    Quand tu peux faire du SQL , fais-le en SQL .....


    regarde ici comment activer AUDIT et FINE_GRAINED AUDITING

    http://download.oracle.com/docs/cd/B...t.htm#i1010251

    Quelle est ta version ORACLE ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Salut,

    Je te remercie pour ton lien, il m'apportera de l'information supplémentaire sur les techniques d'audit directement intégrées dans Oracle que j'ai déjà étudiée.
    Mon employeur risque de refuser l'emploie de cette technique ainsi que l'emploie de logminer et préfèrera sans doute utiliser des "trigger" pour générer la table d'AUDIT citée précédemment.
    Je vais proposer les 3 méthodes en appuyant la solution d'oracle et la table aud$

    Ma question reste ouverte, je compléterai le poste si je passe à l'implémentation pour éventuellement faire appel à vos compétences.

    Edefius

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Autre chose ,
    si tu peux eviter les triggers .... (Rudiard Kipling !!)

    Si ta version Oracle >= 9I alors fined_grained_auditing tu utiliseras ...
    a condition d'avoir Oracle Entreprise Edition

    Il ne necesite pas un redemarrage de la base
    Plus souple, plus d'info que aud$

  5. #5
    Membre éclairé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Par défaut
    Salut,
    Je n'ai pas bien compris ce que tu veux faire, surtout quand tu as mis ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM X where CLEPRIM1&CLEPRIM2 in (....)
    Mais quand vous aurez decidé de la methode que vous utiliserez, laissez nous savoir.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut
    Bonjour,

    Peut être que j'aurais du préciser dès le début mais l'idée finale, est de permettre l'alimentation INCREMENTAL d'un Data Warehouse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM X where CLEPRIM1&CLEPRIM2 in (....)
    La table X est en réalité une source du Data Warehouse mais on ne veut récupérer que les mises à jour ou les inserts.
    Sachant que la table X ne contient aucun "Timestamp" d'insertion ou de modification.

    J'espère que c'est plus clair et que ça va vous donner plein d'idées géniales.

    D'avance merci

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

Discussions similaires

  1. Requête SQL particulière dans procédure stockée
    Par stephane.julien dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/05/2008, 10h56
  2. Oracle 8 : TRUNCATE table dans proc. stockée
    Par davy.g dans le forum Administration
    Réponses: 5
    Dernier message: 16/03/2007, 16h11
  3. [PL/SQL] INSERT dans procédure stockées
    Par etoileDesNeiges dans le forum SQL
    Réponses: 5
    Dernier message: 12/12/2006, 14h18
  4. Longueur d'un VARCHAR dans proc stock
    Par HurtMarley dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/07/2006, 10h30
  5. Réponses: 10
    Dernier message: 17/05/2006, 11h50

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