plsql
  • oracle11g
  • 2013-04-18 3 views 0 likes 
    0

    Lorsque j'essaie d'exécuter le code ci-dessous en obtenant une erreur comme "Erreur de compilation PL/SQL". Qu'est-ce que j'ai fait de mal dans ceci?Exécution de la variable avec exécution immédiate

    declare vsql varchar2(500); 
    begin 
        vsql:='begin 
        create global temporary table temp_subset 
        (id number 
         ,"Category" varchar2(2048) 
         ,"Class" varchar2(2048) 
         ,"Measure" varchar2(2048) 
         ,"Actuals Year Total" varchar2(2048) 
         ,"COL NAME" varchar2(256) 
         ,value varchar2(2048) 
        ); 
    end;'; 
    execute immediate vsql; 
    end; 
    

    Merci.

    +0

    Pourquoi créez-vous une table avec SQL dynamique? –

    Répondre

    0

    Essayez ceci:

    vsql:=' 
        create global temporary table temp_subset 
        (id number 
         ,"Category" varchar2(2048) 
         ,"Class" varchar2(2048) 
         ,"Measure" varchar2(2048) 
         ,"Actuals Year Total" varchar2(2048) 
         ,"COL NAME" varchar2(256) 
         ,value varchar2(2048) 
        ) on commit delete rows'; 
    

    Si deux tables sont nécessaires pour créer:

    vsql:=' 
        begin 
        execute immediate ''create table t1()''; 
        execute immediate ''create table t2()''; 
        end; 
    '; 
    
    +0

    Ok merci, ça marche bien, si je veux exécuter deux tables de création en une seule variable. Comment pouvons-nous créer cela. Pouvez-vous me donner un exemple pour cela? – user1990383

    +0

    @ user1990383 - Réponse mise à jour. –

    +0

    Ok merci beaucoup – user1990383

    Questions connexes