Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2011, 11h07   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 2
Points : 2
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 :
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
Flastick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 11h34   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
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.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/01/2011, 12h19   #3
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

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

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Citation:
alors qu'en fait le "insert ..." serait autant aisé que "Ajouter_client()" à écrire pour l'utilisateur.
Pas sur !
Code :
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 :
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
__________________
Garuda गरूड
Brahmâ la Guerre et Vishnu la Paix

Oracle 10.2.0.4 - Forms6i patch 17 - Toad 11.1 - sharePoint 2010
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 15h25   #4
Invité de passage
 
Inscription : janvier 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 13
Points : 2
Points : 2
D'accord !

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

Flavien
Flastick est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h05.


 
 
 
 
Partenaires

Hébergement Web