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 :

PL/SQL Insertion avec requete parametrée


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut PL/SQL Insertion avec requete parametrée
    Bonjour,
    Dans le cadre d'un projet scolaire, je dois implémenter les fonctions d'un site internet directement dans SQLPlus à l'aide de PL/SQL.

    J'ai donc le cas classique d'une inscription dans lequel je dois renseigner le nom,prenom,mail et pays de l'utilisateur.

    J'ai donc écrit le script simpliste ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE OR REPLACE PROCEDURE Register IS
    BEGIN
    	INSERT INTO PROFIL VALUES(1,&Nom,&Prenom,&Mail,&Pays);
    END;
    /
    J'aurais voulu qu'a l'appel de la procédure on demande à l'utilisateur de rentrer ces info. Malheureusement avec le script ci dessus SQLPlus me demande à la création de la procédure de renseigner les différentes informations, ce qui fait qu'a chaque appel de la procedure j'inscris en fait la même personne.

    Je sais que je pourrais créer la même procedure avec des paramètres en entrée mais je ne trouve pas ça très ergonomique et pas très intuitif pour l'utilisateur.

    J'aurais voulu savoir s'il y avait une erreur dans mon code ou si j'utilise la mauvaise méthode.

    Merci

  2. #2
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par shub Voir le message
    J'aurais voulu savoir s'il y avait une erreur dans mon code ou si j'utilise la mauvaise méthode.

    Merci
    tu confonds un peu tout en fait ....(je crois )

    Le & indique que c'est un paramètre lors de l'éxecution du script "CREATE"

    Regarde plutot du coté des paramètres de fonction/Procédure.

    Il va te falloir un méthode qui prend en entrée 3 arguments et ce sera lors de cet appel que tu lui donneras les noms et autres ...

    Je sais pas si c'est clair ?


    Tu trouveras des infos ici : http://sheikyerbouti.developpez.com/...age=Chap4#L4.1

    en gros tu confonds l'exécution de la procédure et sa création ...
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    Merci pour ta reponse,

    En m'expliquant clairement :

    Mon but est de savoir s'il y a un quelconque moyen pour qu'un utilisateur EXECUTANT la procedure puisse saisir une variable, sans que ma procedure soit une procedure avec des paramètres (car j'ai une table evenement par exemple qu'il faudrait que l'utilisateur puisse remplir, et je me vois mal executer une procedure avec 20 arguments).

    Les recherches que j'ai faites ne m'ont pas convaincu que la solution etait possible, ainsi je e demandais si cela etait réalisable avec des requetes dont les parametres seraient entrés à l'execution.

    Merci encore

  4. #4
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par shub Voir le message
    Merci pour ta reponse,

    En m'expliquant clairement :

    Mon but est de savoir s'il y a un quelconque moyen pour qu'un utilisateur EXECUTANT la procedure puisse saisir une variable, sans que ma procedure soit une procedure avec des paramètres (car j'ai une table evenement par exemple qu'il faudrait que l'utilisateur puisse remplir, et je me vois mal executer une procedure avec 20 arguments).

    Les recherches que j'ai faites ne m'ont pas convaincu que la solution etait possible, ainsi je e demandais si cela etait réalisable avec des requetes dont les parametres seraient entrés à l'execution.

    Merci encore
    Ta procédure n'a pa besoin d'avoir 20 arguments.

    Elle peut en calculer une partie ( ou tous) apres c'est a toi de donner la facon de remplir tes champs .
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    Ta procédure n'a pa besoin d'avoir 20 arguments.

    Elle peut en calculer une partie ( ou tous) apres c'est a toi de donner la facon de remplir tes champs .
    Je ne comprend pas bien ce que tu me dis.
    Je ne peux pas calculer ces champs, c'est l'utilisateur qui va y mettre ce qu'il veut. Je met la table evenement ci dessous :
    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
    CREATE TABLE EVENEMENT --PL/SQL Fait
    (
    	Id_Evenement INTEGER,
    	Nom_Evenement VARCHAR2(30),
    	Hote_Evenement INTEGER,--
    	Type_Evenement VARCHAR2(50),
    	Debut_Evenement DATE,
    	Fin_Evenement DATE,
    	Lieu_Evenement VARCHAR2(30),
    	Rue_Evenement VARCHAR2(100),
    	Ville_Evenement VARCHAR2(30),
    	Telephone_Evenement VARCHAR2(15),
    	Mail_Evenement VARCHAR2(50),
    	Photo_Evenement VARCHAR2(150),
    	Confidentialite_Evenement VARCHAR2(100),
    	Autho_Photo VARCHAR2(3),
    	Autho_Video VARCHAR2(3),
    	CONSTRAINT pk_id_evenement PRIMARY KEY(Id_Evenement)
    );
    L'utilisateur mettra alors ce qu'il veut. Le probleme c'est que je ne veux pas quil tape : exec Inserer_Evenement(Nom,Type,Debut,Fin,Rue,Ville,Telephone,mail,Photo,confidentialite,'oui','non');

    On voit bien que c'est lourd et pas du tout intuitif.
    J'aimerai pouvoir faire en sorte qu'il saisisse au clavier les differents champs, sachant que moi , en tant que concepteur de la base, ne peut pas savoir ce que l'utilisateur voudra mettre.

    J'espere que je suis assez clair.

    Merci en tout cas

  6. #6
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Regarde du coté de Accept et Prompt (enfin tout dépend de ton SGBD je pense )
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    Le projet se fait sous Oracle.
    J'ai regardé du coté du package dbms mais il n'y a rien de bien probant.

  8. #8
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    http://www.orafaq.com/node/515

    ca devrait t'aider je pense.
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  9. #9
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    A noter que tes accept peuvent être utilisés uniquement en tout début de programme puisque le PL/SQL est exécuté sur le serveur donc sans la moindre interaction possible.
    Le package DBMS quand a lui ne sert qu'a afficher au cours de la procédure, chose que prompt ne permet pas non plus.

    Pour la réponse a ton problème moi je ferait des parramètres en entré uniquement : nom, prénom, email, pays.

    Puis j'enverais ces paramètres dans ma requête INSERT.

    En suite tu pourra toujours écrire un petit fichier.sql que tu lancera et qui fera 3 prompt et puis ta procédure.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 236
    Points : 80
    Points
    80
    Par défaut
    Merci, e pense que je vais faire comme ca, je m'en contenterai.

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

Discussions similaires

  1. Probleme avec requete parametrée
    Par ibrahima lamine dans le forum VB.NET
    Réponses: 2
    Dernier message: 20/02/2011, 13h49
  2. [SQL] insert avec itération
    Par castorameur dans le forum Développement
    Réponses: 5
    Dernier message: 26/05/2010, 15h48
  3. [SQL] Insert avec boucle
    Par Virgile59 dans le forum Développement
    Réponses: 1
    Dernier message: 05/11/2008, 10h46
  4. SQL insertion avec champ autoIncrement
    Par sg-40 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 09/11/2005, 11h28
  5. [ACCESS][SQL] Problème avec requete SQL ...
    Par mpascolo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/11/2005, 10h54

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