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 :

Utilisation de %rowtype dynamiquement


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Par défaut Utilisation de %rowtype dynamiquement
    Bonjour,

    Voici mon problème (Oracle 9iR2):

    J'aimerais utiliser %rowtype de manière dynamique afin de récupérer les colonnes et types de chaque table de mon curseur.

    Soit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    PROCEDURE MA_PROCEDURE IS
        CURSOR CUR_TABLES IS SELECT TABLE_NAME NAME FROM USER_TABLES WHERE TABLE_NAME LIKE '%_SYS';
    BEGIN
        FOR V_TABLES IN CUR_TABLES LOOP
            DECLARE
                MON_TABLEAU V_TABLES.NAME%ROWTYPE;
            BEGIN
                MON_TRAITEMENT;
            END;
        END LOOP;
    END;
    Le problème est que %rowtype ne peut pas être utilisé avec une variable. Est-ce que quelqu'un aurait une idée pour rendre cela dynamique?

    Merci d'avance,

    Cédric

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Par défaut
    Oui, ROWTYPE c'est pour un enregistrement comme son nom l'indique en anglais (ROW), donc plusieurs variables. Dans ton cas, c'est un %TYPE qu'il faut utiliser.

    Par contre, je savais que l'on pouvait imbriquer des blocs PL/SQL à l'intérieur d'autres blocs PL/SQL, c'est-à-dire un bout de code entre un BEGIN...END au sein de la procédure stockée. Mais, je ne suis pas sûr que tu puisses déclarer une variable locale à une partie seulement de la procédure stockée. Est-ce qu'il ne faudrait pas remonter la déclaration de la variable avant la BEGIN de la procécure stockée ?

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    avec les ANY types, il me semble que ça a déjà été fait dans le forum... mais gare aux migraines pour y arriver

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2006
    Messages : 69
    Par défaut
    @dgi77, Désolé, ce n'est pas MA_VARIABLE, c'est MON_TABLEAU (correction dU premier post). Je dois récupérer toutes les colonnes et types de V_TABLES.NAME afin de stocker un résultat intermédiaire dans le tableau.

    Je vais voir si ce lien peut m'aider :

    http://www.developpez.net/forums/showthread.php?t=12645

Discussions similaires

  1. PortCom comment utiliser le composant dynamiquement
    Par freespiritbcd dans le forum C++Builder
    Réponses: 14
    Dernier message: 22/05/2008, 14h40
  2. Génération & utilisation de vues dynamiques
    Par yanne dans le forum W4 Express
    Réponses: 2
    Dernier message: 29/06/2007, 08h25
  3. Utilisation des formulaires dynamiques avec struts
    Par nabdelghafour dans le forum Struts 1
    Réponses: 1
    Dernier message: 30/03/2007, 11h58
  4. [VB.NET]Utilisation des ASCX dynamiquement
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/06/2006, 15h57
  5. Réponses: 6
    Dernier message: 03/01/2006, 13h36

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