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 :

script création table dynamique


Sujet :

PL/SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    novembre 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 190
    Points : 103
    Points
    103
    Par défaut script création table dynamique
    salut
    j'ai une table maitre ma_table(nom_table) et 2 tables détails
    la 1ere col_table là ou je paramétre les champs avec leurs types , longueur et précisions ,la 2éme cons_table là ou je paramétre les constraints avec tout leurs détails.
    ma question existe t'il un script de création dynamique de la table en parcourant toutes les données
    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Non, faudra le développer toi même

  3. #3
    Membre actif Avatar de mongilotti
    Profil pro
    Inscrit en
    février 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : février 2003
    Messages : 314
    Points : 298
    Points
    298
    Par défaut
    mets nous un bout de script et on t'aiderais.

  4. #4
    Membre régulier
    Inscrit en
    novembre 2006
    Messages
    190
    Détails du profil
    Informations forums :
    Inscription : novembre 2006
    Messages : 190
    Points : 103
    Points
    103
    Par défaut
    salut
    voila j'ai reussi à dévélopper le script nécessaire
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    create or replace procedure create_tab(n_tab in varchar2) is
    v_req varchar2(1000);
    v_col varchar2(500);
    ttyp varchar2(20);
    val varchar2(1);
    begin
    select nvl(valider,'N') into val  from prm_tabs where nom_tab = n_tab;
    --dbms_output.put_line(val);
    if val = 'N' then
    v_req := 'create table '||n_tab||'(';
    -------------------------------------------
    ----------------------------------------
    for c in(select * from prm_cols where nom_tab = n_tab) loop
    select decode(c.type_col,'N','NUMBER','V','VARCHAR2','D','DATE','LONG RAW') into ttyp from dual;
    v_col :=v_col||c.nom_col||' '||ttyp ;
    -------------------------------------------------------------------
    if c.type_col = 'N' and c.long_col is not null and c.precis_col is not null then
    v_col := v_col||'('||c.long_col||','||c.precis_col||')';
    elsif c.type_col = 'N' and c.long_col is not null and c.precis_col is null  then
    v_col := v_col||'('||c.long_col||')';
    elsif c.type_col = 'V' then 
    v_col := v_col||'('||c.long_col||')';
    /*else
    v_col := v_col||',';*/
    end if;
    ------------------------------------------
    v_col := v_col||',';
     end loop;
    --------------------------------------------
    --------------------------------------------
     v_col := substr(v_col,1,length(v_col)-1);
     v_col := v_col||')';
     v_req := v_req||v_col;
     update prm_tabs set valider = 'O' where nom_tab = n_tab ;
     execute immediate v_req;
     
     end if;
     end;
    juste il reste les contraintes j'ai prévu la conception suivante
    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
     
    desc prm_cons
    Name        Type         Nullable Default Comments 
    ----------- ------------ -------- ------- -------- 
    NOM_CONS    VARCHAR2(30)                           
    NOM_TAB     VARCHAR2(30) Y                         
    TYP_CONS    VARCHAR2(1)  Y                         
    NOM_TAB_REF VARCHAR2(30) Y                         
    CONDITION   VARCHAR2(30) Y                         
    ------------------------
    desc prm_cons_cols
    Name     Type         Nullable Default Comments 
    -------- ------------ -------- ------- -------- 
    NOM_TAB  VARCHAR2(30)                           
    NOM_CONS VARCHAR2(30)                           
    NOM_COLS VARCHAR2(30)
    merci encore une fois

Discussions similaires

  1. script de création de table dynamique
    Par Etienne5685 dans le forum Développement
    Réponses: 2
    Dernier message: 07/09/2011, 14h38
  2. Méthode de création table Paradox dynamique
    Par mamou30 dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/02/2007, 13h36
  3. Script Création de table plus chargement
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/08/2006, 14h14
  4. récupération dynamique du script 'create table'
    Par Feyrehr dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 07/07/2006, 08h59
  5. [Oracle] Script création Table, violation de contraintes
    Par boudou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/02/2006, 13h47

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