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 :

fonction générique PL SQL


Sujet :

SQL Oracle

  1. #1
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut fonction générique PL SQL
    Bonjour,

    Je suis en train de développer un module PL SQL qui fait souvent le meme
    traitement.

    /* ----------------------------------------------
    Fonction future générique de controle des tables de nomenclature N_NOM_XXXXXX
    ----------------------------------------------*/
    FUNCTION lookup_test()
    RETURN BOOLEAN
    IS
    /*** curseur local sur les codes statuts table N_STATUT **/
    local_statut n_statut.code%TYPE;

    CURSOR cursor_statut
    IS
    SELECT DISTINCT code
    FROM n_statut;

    TYPE tref_statut IS TABLE OF n_statut.code%TYPE;
    var_statut tref_statut;
    /*************************************************************/

    BEGIN
    IF local_apprenti.statut IS NULL
    THEN
    INSERT INTO apprenti_upload_error
    (apprenti_pk,
    id,
    statut
    )
    VALUES (local_apprenti.apprenti_pk,
    local_apprenti.id,
    (SELECT description
    FROM apprenti_type_error
    WHERE type_error_pk = 3)
    );

    RETURN FALSE;
    ELSE
    OPEN cursor_statut;

    FETCH cursor_statut
    BULK COLLECT INTO var_statut;

    CLOSE cursor_statut;

    FOR i IN var_statut.FIRST .. var_statut.LAST
    LOOP
    IF local_apprenti.statut = var_statut(i)
    THEN
    RETURN TRUE;
    END IF;
    END LOOP;

    INSERT INTO apprenti_upload_error
    (apprenti_pk,
    id,
    statut
    )
    VALUES (local_apprenti.apprenti_pk,
    local_apprenti.id,
    (SELECT description
    FROM apprenti_type_error
    WHERE type_error_pk = 13)
    );

    RETURN FALSE;
    END IF;
    END lookup_statut;

    Ou il faudrait que le nom de table , le type d'erreur, le nom de la table seraient des valeurs que je passerais en paramètre .

    Cela se fait en PL SQL ??
    je vais tester mais si vous avez un avis je prends ...


    olivier

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    (Le # dans l'édition des messages). Merci d'éditer ton message.

    Pour le nom de tables en paramètres, faut utiliser EXECUTE IMMEDIATE.
    Fais une recherche sur le forum la question a déjà été posée.

Discussions similaires

  1. Quel SGBD permet d'écrire ses fonctions d'agrégation SQL?
    Par Machin0410 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 28/03/2006, 17h31
  2. Réponses: 4
    Dernier message: 18/01/2006, 10h33
  3. Fonctions génériques et listes
    Par DevloNewb' dans le forum C++
    Réponses: 6
    Dernier message: 13/01/2006, 14h47
  4. Fonction "Format" sous SQL
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 08/10/2004, 09h07
  5. fonction left avec sql server 6.5
    Par shake dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/06/2004, 08h48

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