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

Oracle Discussion :

select into table


Sujet :

Oracle

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2009
    Messages : 183
    Par défaut select into table
    Bonjour,

    Avec sql server on peut créer une table (à la volée) de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select '0'  "x" ,'1'  "y" ,'2'  "z"  into manouvelletable;
    Tout de suite la table "manouvelletable" sera créée.

    Est-ce qu'il y a une façon de créer une table avec oracle de la même façon que sql server ?

    Merci.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Peut être avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create table manouvelletable as select '0' "x" ,'1' "y" ,'2' "z" from dual

  3. #3
    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
    Attention aux "" dans le nom des champs, ça va forcer la casse et ensuite un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT x FROM manouvelletable
    ne marchera pas
    Il faudra mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "x" FROM manouvelletable

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2009
    Messages : 183
    Par défaut
    voici la procédure que je veux créer
    Code sql : 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
    create or replace
    PROCEDURE "USP_EXPORT_EMPLOYE" (RCT1 in out globalpkg.rct1)                         
    as   
    n integer;
    begin      
    -----------------------Employés-------------------------- 
    open rct1 for 
    select mat "Matricule",Nompre "Nom\Prénom",Forminit "Formation Initiale",case Auditinter when 1 then 'OUI' else 'NON' end "Auditeur Interne"                             
    ,case Super when 1 then 'OUI' else 'NON' end "Superviseur"                              
    ,case Site.Site when 'NonAffecte' then '' else Site.Site end  "Site",Adresse_mail "Mail" ,Tel "Téléphone"  
    ,case to_char(Date_rec) when '01/01/1900' then '' else to_char(Date_rec) end "Date de recrutement"                              
    ,case to_char(Date_N) when '01/01/1900' then '' else to_char(Date_N) end "Date de Naissance"  
    ,Cin "CIN",case Sexe when 1 then 'Masculin' else 'Féminin' end "Sexe",                              
    case Diff when '1' then 'Electronique' else 'Papier' end "Type de diffusion"       
    into tab_export_employe("Matricule" ,"Nom\Prénom", "Formation Initiale","Auditeur Interne", "Superviseur", "Site", "Mail","Téléphone",  "Date de recrutement", "Date de Naissance", "CIN" ,"Sexe",  "Type de diffusion" )      
    from employe left outer join                               
    Site on Site.CodeSite=Employe.CodeSite      
    where Supp<>0  ;
    end  ;

    j'utilise sqldevelopper donc comment faire pour créer une table depuis une procédure car je pense et je la vérifie en remplaçant "select into" par "create table as" ne fonctionne pas dans la procédure ???

  5. #5
    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
    c'est une opération DDL : donc pas possible ordre direct dans une procédure. Faut passer par EXECUTE IMMEDIATE

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2009
    Messages : 183
    Par défaut
    McM,ou n'importe qui peut m'aider, comment utiliser execute immediate SVP?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Par défaut
    Bonjour Zdig10,

    Vous trouverez un tuto sous le lien ci-dessous :
    http://sheikyerbouti.developpez.com/execute_immediate/

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2009
    Messages : 183
    Par défaut
    Grand merci tibal et tout le monde,
    le cours que vous m'avez conseillez de lire est très intéressant
    a propos de la solution voici ce que j'ai fait:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create procedure test
    as
    script nvarchar2(1000); 
    begin
    script:='create table test as select * from employe';
    execute immediate 'script';
    end;
    ça fonctionne normalement remerci tout le monde

  9. #9
    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
    Ca m'étonnerait
    Parce que dans ton code, oracle va vouloir exécuter la commande script (et pas la commande contenue dans la variable script.

    Mieux vaut pas laisser un code erroné pour les futurs lecteurs, voici la correction.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE procedure test
    AS
    script nvarchar2(1000); 
    begin
    script:='create table test as select * from employe';
    execute immediate script;
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation : Select Into ou Create Table?
    Par Baquardie dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/07/2007, 15h12
  2. [SQL]Creer une table a partir d'une requete SELECT * INTO
    Par aliboubou dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/04/2007, 11h30
  3. Select into table temporaire
    Par the big ben 5 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/08/2006, 16h23
  4. [PL/SQL] SELECT INTO avec type TABLE
    Par Kaejar dans le forum Oracle
    Réponses: 13
    Dernier message: 06/07/2006, 16h17
  5. insert into table values/ insert into table select
    Par aaronw dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/05/2005, 15h14

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