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 :

create table dynamic


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 210
    Par défaut create table dynamic
    Bonjour je voudrai savoir si il était possible de créer une table
    donc le nom serait composé du résultat d'une fonction ?

    Car j'ai essayé avec la syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TABLE employees || unPackage.uneFunction() AS
      SELECT * FROM EMPLOYEES
    Mais j'ai le message d'erreur invalid table name

    Merci

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec execute immediate 'CREATE TABLE employees' || unPackage.uneFunction() ||'AS SELECT * FROM EMPLOYEES'

  3. #3
    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
    Citation Envoyé par laurentschneider Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec execute immediate 'CREATE TABLE employees' || unPackage.uneFunction() ||'AS SELECT * FROM EMPLOYEES'
    Je pense qu'il sera bien d'ajouter un petit espace juste avant As

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    pas si la fonction retourne un truc du style (x number, y number)... je voulais même enlever ceux avant et après l'astérisque

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    bon, si la fonction retourne TABLESPACE USERS il faudra aussi en ajouter un après employees

  6. #6
    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
    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> Create Or Replace Function foo Return Varchar2
      2  Is
      3  Begin
      4    Return '"employees tablespace users" (x, a, b)';
      5  End;
      6  /
     
    Function created
    SQL> Begin
      2    Execute Immediate 'Create Table '||foo()||' As Select employee_id, first_name, last_name From hr.employees Where 1 = 2';
      3  End;
      4  /
     
    PL/SQL procedure successfully completed
    En sqlplus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SQL> desc "employees tablespace users"
     Nom                                       NULL ?   Type
     ----------------------------------------- -------- ----------------------------
     X                                                  NUMBER(6)
     A                                                  VARCHAR2(20)
     B                                         NOT NULL VARCHAR2(25)
    Mais, mon PL/SQL Developper n'a pas envie de travailler avec une table qui s'appelle "employees tablespace users"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SQL> desc "employees tablespace users"
    Object "employees tablespace users" does not exist.
    Heureussement il veut la supprimer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SQL> drop table "employees tablespace users"
      2  /
     
    Table dropped

Discussions similaires

  1. CREATE TABLE .... AS SELECT
    Par blids dans le forum SQL
    Réponses: 5
    Dernier message: 13/10/2016, 14h00
  2. create table
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 08/07/2004, 17h08
  3. [DB2] create table... if not exists ?
    Par iubito dans le forum DB2
    Réponses: 6
    Dernier message: 23/03/2004, 18h26
  4. Create table + jointure
    Par ender999 dans le forum Débuter
    Réponses: 7
    Dernier message: 20/02/2004, 12h04
  5. Database new user & create table
    Par MFDev dans le forum InterBase
    Réponses: 3
    Dernier message: 30/09/2003, 20h47

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