comment créer de la dynamique de la table dans oracle avec dynamique de nom de colonne et dynamique de type de données avec toutes les vues ou de tout autre type de table

Merci pour tout,Nous pouvons créer un tableau dynamiquement avec l'aide de execute immediate requête. Mais lorsque l'on crée une table, il est créé, mais si je voulais créer un tableau dynamiquement avec la dynamique n'a de colonnes, alors la question qui a été soulevée. En fait, j'ai créé une table, mais quand j'ai créé pas de colonnes avec la table, puis beaucoup d'erreurs soulevées. Voici le code que j'ai écrit dans l'Oracle dans une procédure.

declare
    no_of_cols number:=&no_of_cols;
    colname varchar2(20);
    coldata varchar2(20);
    i number;
begin
    execute immediate 'create table smap1(nam varchar2(10))';
    age:='age';
    datf:='number'
    if(no_of_cols>=2) then
        for i in 2..no_of_cols loop
            colname:=age;
            coldata:=datf;
            execute immediate 'alter table smapl add '||colname||' '||coldata;  
        end loop;
    end if;
end;

ce code d'exécution avec quatre colonnes du même type si no_of_cols est 5.Puis j'avais modifié le code et exécutez le plsql programme.le programme est comme suit

declare
no_of_cols number:=&no_of_cols;
colname varchar2(20);
age varchar2(20);
datf varchar2(20);
coldata varchar2(20);
i number;
begin
    execute immediate 'create table smap1(nam varchar2(10))';
    if(no_of_cols>=2) then
        for i in 2..no_of_cols loop
            age :=&age;
            datf:=&datf;
            colname:=age;
            coldata:=datf;
            execute immediate 'alter table smapl add '||colname||' '||coldata;  
        end loop;
    end if;
end;

Les éléments suivants sont les erreurs générées lors de la procédure ci-dessus est créé

  [Error] Execution (13: 19): ORA-06550: line 13, column 19:
  PLS-00103: Encountered the symbol ";" when expecting one of the following:

  ( - + case mod new not null <an identifier>
  <a double-quoted delimited-identifier> <a bind variable>
  continue avg count current exists max min prior sql stddev
  sum variance execute forall merge time timestamp interval
  date <a string literal with character set specification>
  <a number> <a single-quoted SQL string> pipe
  <an alternatively-quoted string literal with character set specification>
  <an alternatively

j'avais fait quelques modifications pour le dessus de plsql,puis le plsql code comme suit

declare
no_of_cols number:=&no_of_cols;
colname varchar2(20):='&colname';
coldata varchar2(20):='&coldata';
i number;
begin
 execute immediate 'create table smap1(nam varchar2(10))';
if(no_of_cols>=2) then

    for i in 2..no_of_cols loop
       execute immediate 'alter table smapl add '||colname||' '||coldata;  
    end loop;
end if;
end;

puis après l'exécution j'obtiens l'erreur suivante et il doenot lire le nom de colonne dynamiquement

[Error] Execution (1: 1): ORA-02263: need to specify the datatype for this column
 ORA-06512: at line 10
Vous êtes le mélange plsql variables et sql*plus variables (&). De Plus, vous ne pouvez pas créer une table vide et ajouter des colonnes - vous besoin de concaténer des chaînes de caractères en un seul create table (...) chaîne et seulement ensuite exécuter immédiate.
"beaucoup d'erreurs soulevées." Quels ont été les errorz qui ont été soulevées?
j'ai oublié de mentionner ces erreurs maintenant, j'avais modifié la question
ce client vous aide à exécuter le présent? Est-il SQL*Plus?
Crapaud 12c et oracle 11g en tant que client

OriginalL'auteur Smart003 | 2014-07-23