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 :

Besoin de procédures encapsulées?


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Besoin de procédures encapsulées?
    Bonjour à tous,

    Je dois réaliser un travail en PL/SQL sur Oracle et il est inscrit dans le cahier des charges :

    "développer les composants logiciels PL/SQL permettant de l'alimenter et de l'interroger de manière (relativement) aisée pour un utilisateur non informaticien."
    [...]
    "Contraite: L'interrogation de la base de données devra se faire grâce à des requêtes encapsulées dans des procédures PL/SQL regroupées dans un paquetage"

    Comme j'ai l'habitude du C++ mais que je ne connais presque rien en SQL, je me demande si, par exemple pour ajouter un nouveau client, il est vraiment nécessaire d'écrire une procédure si simple qui fait le "insert" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE OR REPLACE PROCEDURE Ajouter_client(...)
    IS
    BEGIN
    INSERT INTO Client ...(tous les arguments passés en paramètre)
    END;
    alors qu'en fait le "insert ..." serait autant aisé que "Ajouter_client()" à écrire pour l'utilisateur.
    En C++ on le fait pour pouvoir protéger les données de l'utilisateur, mais en SQL, comment a-t-on l'habitude de faire ?

    En vous remerciant beaucoup pour votre aide,

    Flavien

  2. #2
    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
    Faire « insert Into Table » implique que l’utilisateur en question peut accéder à la table.
    Exécuter la procédure « ajouter_client » en PL/SQL implique que l’utilisateur en question a le droit d’exécuter la procédure mais il n’a pas forcement le droit d’accéder à la table.

  3. #3
    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
    alors qu'en fait le "insert ..." serait autant aisé que "Ajouter_client()" à écrire pour l'utilisateur.
    Pas sur !
    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
    21
    22
    23
     
    SET DEFINE OFF;
    Insert into SOC
       (NUM_SOC, COD_PAYS, COD_DEV, COD_TYP_SOC, NOM_SOC, 
        ADR1_SOC, ADR2_SOC, CP_SOC, VILLE_SOC, TEL1_SOC, 
        TEL2_SOC, FAX_SOC, SIT_SOC, ID_NAT_SOC, FLG_ACT_SOC, 
        DAT_FIN_SOC, DAT_DEB_SOC, ID_CEE_SOC, DAT_CREA_SOC, UTI_CREA_SOC, 
        DAT_MAJ_SOC, UTI_MAJ_SOC, FLG_INT_SOC, REG_TVA_TIERS, TAUX_ESC_TIERS, 
        FLG_HON, TAUX_RFT, TAUX_RG, SEUIL_RG, FLG_PORT, 
        FLG_RAS_SOC, SEUIL_RFT, NUM_SOC_MERE, NUM_SOC_FIN, TAUX_PART_SOC, 
        SEUIL_VAL_JUR, SIGL_SOC, COD_CPT_SOC, ADR3_SOC, OBS_SOC)
     Values
       (1, 'FR', 'EUR', 'F', 'GSE SAS', 
        'Parc d''Activités de l''Aéroport', '310, allée de la chartreuse', '84005', 'AVIGNON CEDEX 1', '+33(0)4 90 23 74 00', 
        NULL, '+33(0)4 90 84 44 00',
    ....
        NULL, 5, 5, 500, 'O', 
        NULL, 500, 50, NULL, NULL, 
        7500, 'GSE', 'GS', 'BP 51', NULL, 
        'yyyyy', 'wwwww', '00000000000', '25', 'N', 
        'FR', '76', 'xxxxxxxxxxxxxxxxxxxx', 'CMCIFRPPCOR', 'CIC PARIS', 
        'GRANDES ENTREPRISES');
    COMMIT;
    me semble plus complexe que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ajoute_client(1, 'FR', 'EUR', 'F', 'GSE SAS', 
        'Parc d''Activités de l''Aéroport', '310, allée de la chartreuse', '84005', 'AVIGNON CEDEX 1', '+33(0)4 90 23 74 00', 
        '', '+33(0)4 90 84 44 00',....);
    Je dirais donc que ca aussi l'avantage de ne pas à avoir à connaitre la structure des tables (notamment, le nom des colonnes !) sans parler de la maitrise du SQL

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2011
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    D'accord !

    J'ai compris les avantages et la manière de faire, super !
    Merci beaucoup à vous deux, et à bientôt !

    Flavien

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

Discussions similaires

  1. Besoin d'aide pour faire une procédure stockée
    Par PoichOU dans le forum SQL
    Réponses: 17
    Dernier message: 30/04/2007, 17h55
  2. Encapsulation, besoin d'aide svp
    Par 3xplo dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/02/2007, 14h52
  3. Réponses: 3
    Dernier message: 23/10/2006, 02h07
  4. Besoin d'aide pour un débutant en procédure stockée
    Par el gringo dans le forum Débuter
    Réponses: 2
    Dernier message: 06/04/2006, 11h17
  5. Réponses: 2
    Dernier message: 20/03/2006, 09h39

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