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 :

Fonction stockée et table comme valeur de retour


Sujet :

PL/SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Fonction stockée et table comme valeur de retour
    Bonjour ,
    je suis bloqué depuis plusieurs jour sur une fonction stockée qui doit me retourner une table (table temporaire)
    il prends une chaîne en entrée(mot de passe), crypte cette chaine (a travers une autre fonction que j'ai appelé , créer une table temporaire et insert cette valeur dans la table avant de la retourné.

    voici mon code:

    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
    TYPE Table_Temp IS TABLE OF VARCHAR2(255) INDEX BY BINARY_INTEGER ;
     
    FUNCTION TABLE_PWD
     (spwd_clear in varchar2) RETURN Table_Temp AS
     
      BEGIN
      execute immediate 'create global temporary table Tpwds( designation VARCHAR2(255) NOT NULL)
                                                  ON COMMIT PRESERVE ROWS';
     
     
        execute immediate 'insert into Tpwds values('||chr(039)||'' ||FCT_ENCODE_PWD(spwd_clear)||''||chr(039)||')'; 
        execute IMMEDIATE 'select * from Tpwds';
     
     
        return execute immediate 'Tpwds';
     
    END TABLE_PWD;


    La fonction ne marche pas...
    est-ce la bonne façon de faire?

    avez vous une meilleure idée que la mienne?

    Merci d'avance

    please Help

  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
    Citation Envoyé par quaterbac Voir le message
    ...
    avez vous une meilleure idée que la mienne?
    ...
    Oui, déjà commencez par lire la documentation sur les variables curseur, elle contient des exemples.
    Pourquoi utiliser/insérer dans une table temporaire ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Oui, déjà commencez par lire la documentation sur les variables curseur, elle contient des exemples.
    Pourquoi utiliser/insérer dans une table temporaire ?
    je veux car je veux que la table soit supprimée après son utilisation..
    je suis ouvert a toute suggestion je suis pas expert du tout en la matière..

    Merci de votre disponibilité

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    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
     
    FUNCTION TABLE_PWD
     (spwd_clear in varchar2) RETURN Table_Temp AS
     res Table_temp;
      BEGIN
       create global temporary table Tpwds( designation VARCHAR2(255) NOT NULL)
                                                  ON COMMIT PRESERVE ROWS;
     
     
        insert into Tpwds values(||chr(039)||'' ||PKG_USER.FCT_ENCODE_PWD(spwd_clear)||''||chr(039)||); 
         select * from Tpwds;
     
        return Tpwds;
     
    END TABLE_PWD;
    je donne suite a mes recherches; pouvez vous me conseiller?
    c'est vraiment important

  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 vous insérez une seule valeur à quoi sert la table temporaire? Votre code:
    1. crée une table temporaire, ce qui est mauvais les objets doivent être déjà existantes lors d'exécution du code PL/SQL
    2. insère dans cette table un enregistrement; ok mais sans préciser la colonne ce qui est mauvais
    3. sélectionne cette valeur à partir de la table
    4. et renvoie cette valeur



    Question : pourquoi votre fonctionne ne se limite pas à renvoyer juste la valeur ?

Discussions similaires

  1. [2008R2] Executer une liste de procédure stockées commes valeurs de champ d'une table.
    Par M.A.X.I.M.E. dans le forum Développement
    Réponses: 2
    Dernier message: 18/06/2014, 14h21
  2. proc. stockée : Bigint comme valeur de retour
    Par stever50 dans le forum Développement
    Réponses: 7
    Dernier message: 15/12/2010, 21h32
  3. Définir un champ de table comme valeur de variable
    Par majudis dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/12/2009, 09h05
  4. Appel de fonctions et récupération de la valeur de retour
    Par Mickael Baron dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/01/2009, 13h57
  5. Question sur les fonctions avec "TABLE" comme param. de retour
    Par Alex01 dans le forum Développement
    Réponses: 2
    Dernier message: 17/11/2008, 09h26

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