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 07/12/2007, 10h35   #1
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 65
Points : 15
Points : 15
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 :
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
cedrich est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2007, 11h29   #2
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
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 ?
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2007, 11h31   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
avec les ANY types, il me semble que ça a déjà été fait dans le forum... mais gare aux migraines pour y arriver
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2007, 11h53   #4
Futur Membre du Club
 
Inscription : septembre 2006
Messages : 65
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 65
Points : 15
Points : 15
@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/d12645/bases-donnees/oracle/pl-sql/plsql-analyse-syntaxe/
cedrich est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h29.


 
 
 
 
Partenaires

Hébergement Web