Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2011, 12h28   #1
Membre du Club
 
Inscription : avril 2002
Messages : 153
Détails du profil
Informations forums :
Inscription : avril 2002
Messages : 153
Points : 42
Points : 42
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 :
1
2
CREATE TABLE employees || unPackage.uneFunction() AS
  SELECT * FROM EMPLOYEES
Mais j'ai le message d'erreur invalid table name

Merci
allstar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 12h59   #2
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
Code :
exec execute immediate 'CREATE TABLE employees' || unPackage.uneFunction() ||'AS SELECT * FROM EMPLOYEES'
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 14h01   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
Citation:
Envoyé par laurentschneider Voir le message
Code :
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
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/04/2011, 14h17   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
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
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 14h20   #5
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
bon, si la fonction retourne TABLESPACE USERS il faudra aussi en ajouter un après employees
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 16h07   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
Code :
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 :
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 :
1
2
3
 
SQL> DESC "employees tablespace users"
Object "employees tablespace users" does NOT exist.
Heureussement il veut la supprimer
Code :
1
2
3
4
5
6
 
 
SQL> DROP TABLE "employees tablespace users"
  2  /
 
TABLE dropped
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 16h20   #7
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
hahaha
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h51.


 
 
 
 
Partenaires

Hébergement Web