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 :

SELECT FOR DANS ORACLE


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut SELECT FOR DANS ORACLE
    Salut les developpeurs !!

    ça fais une semaine que je me démaine à trouver mon select, je vous explique je voudrais faire une vue à 2 colonne me ramenant toutes les tables de mon user (dans la 1ère colonne) et tous les record count propre à chaque table (dans la 2ème colonne)

    Seulement je n'y arrive toujours pas, j'ai du mal à struturer mon FOR LOOP.

    Quelqu'un pourrait-il m'aider ??

    Voila ce que j'ai commencer à faire :

    DECLARE
    v_table VARCHAR2(50);

    BEGIN
    CREATE OR REPLACE VIEW V_ALL_TABLES
    (TABLE_NAME,RECORD_COUNT)
    AS
    SELECT table_name,
    FOR table_name=LOOP select count(*) FROM user_tables END LOOP FROM user_tables
    GROUP BY table_name

    et quand je fais SELECT table_name FROM user_tables;
    j'arrive à me ramener toutes mes tables.

    Je ne suis q'une débutante.....

    Merci d'avance à tous

    HV.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu ne peux pas créer une vue comme ça en ayant le nom de la table comme paramètre.
    En plus, tu lances du SQL (create view...) dans un bloc PL/SQL (declare / begin / end ), ça ne peut pas marcher.
    Il te faut utiliser du SQL dynamique (je te renvoie sur la très bonne doc de ce site: http://sheikyerbouti.developpez.com/execute_immediate/ )

    Pour obtenir ce que tu veux, je fais comme ça :

    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
    create or replace FUNCTION F_count(TABLE_NAME IN VARCHAR2) RETURN NUMBER AS
    request VARCHAR2(300);
    nb_lines NUMBER;
    BEGIN
     EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || TABLE_NAME INTO nb_lines ;
     RETURN nb_lines;
    EXCEPTION
    WHEN others THEN
     RETURN NULL;
    END F_count;
     
    CREATE OR REPLACE FORCE VIEW V_COUNT_ALL (TABLE_NAME, nb_lines) AS 
    SELECT UT.TABLE_NAME, F_count(UT.TABLE_NAME) nb_lines
    FROM user_tables UT 
    ORDER BY UT.TABLE_NAME;
    Dernière modification par Invité ; 22/10/2007 à 21h24.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut
    Merci Jerome pour ton aide,

    Quand je fais ce que tu me dis, il me crée ma view V_COUNT mais elle à une croix rouge et TOAD me dis que c'est une invalid view, je ne peux pas voir les data à l'intérieur.

    Peut etre que j'ai mal fait quelquechose.....

    Dois je remplacer des instruction dans ta requête, parce que j'ai tout lancer en même temps dans SQL Editor ???

    Gros merci d'avance...

    HV.

  4. #4
    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 FORCE dans une création de vue crée la vue même en erreur.
    Enlève le avant de compiler ta vue, tu auras l'erreur (sous toad) sinon show_error sous sqlplus.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Par défaut
    C'est bon je viens de réussir.

    En fait il fallait que je lance d'abord la créaton de la fonction....puis celle de la vue.

    Et tout ça dans SQL+ et non dans SQL Editor de TOAD.

    Un grand merci à Jerome, tu es le meilleur.

    Je voudrais faire la même chose mais avec toutes les sequences de mon user et mes currval propre à chaque sequence.

    T'as pas une idéé ??

    J'essaye de modifier ta fonction mais je n'y arrive pas...

    Merci d'avance...

    @+

    HV

Discussions similaires

  1. [AC-2010] Select dans ACCESS et dans Oracle
    Par big1 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/03/2015, 15h51
  2. Utiliser une boucle "For" dans un" Select Case"
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/04/2014, 09h34
  3. Select for update nowait skip locked en oracle 11
    Par bruno270579 dans le forum SQL
    Réponses: 2
    Dernier message: 29/06/2012, 08h12
  4. Réponses: 5
    Dernier message: 20/05/2012, 12h49
  5. Selection aléatoire dans une fouchette de 10%
    Par RobertDeNiroZ dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/06/2004, 09h22

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