Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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 11/04/2007, 10h41   #1
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Par défaut Oracle 8 : Proc. stock. + DDL

Bonjour,

Peut-on faire des DDL (ex : CREATE TABLE AS SELECT ... ) dans une procédure stockée ?

Merci.
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 10h44   #2
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Oui, avec la commande execute immediate tu peux faire :
Code :
execute immediate 'create matable...';
Il existe peux être d'autre moyen de le faire, mais en voilà déjà un !
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 10h48   #3
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Oui mais, si je luis fais ceci :

Code :
1
2
3
4
5
6
7
8
9
 
EXECUTE IMMEDIATE ('
CREATE TABLE tab1
AS
SELECT *
  FROM tab2
WHERE col1 = 'A'
    AND col2 = 'B'
');
Ca ne lui plait pas :
Citation:
ERREUR Ó la ligne 61 :
ORA-01756: une cha¯ne entre apostrophes ne se termine pas correctement
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 10h52   #4
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
comme ça c'est pas mieux ?
Code :
EXECUTE IMMEDIATE 'CREATE TABLE tab1 AS SELECT * FROM tab2 WHERE col1 = ''A'' AND col2 = ''B''';
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 10h56   #5
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Ma première tentative :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
EXECUTE IMMEDIATE('
CREATE TABLE tbl_marche_ase
   AS
   SELECT  COLECT, 
   	   UAGTHEM, 
   	   ANBU1, 
   	   NUBU1, 
   	   NNM1, 
   	   PERIODE1, 
   	   PART1, 
   	   SUBSTR(NNM1,3,2) AS PLAGE_NUM,
   	   FOUR, 
   	   UAU, 
   	   MTMINI AS MT_MINIMUM, 
   	   MTMAXI AS MT_MAXIMUM, 
   	   MTINIT AS MT_INITIAL, 
   	   MTAVE AS MT_AVENANT, 
   	   MTVARI AS MT_VARIATION, 
   	   TOT AS MT_TOTAL, 
   	   MTPART AS MT_NONREPARTI, 
   	   CREAL AS MT_LIQ_ANT, 
   	   MT AS MT_EXERCICE_EN_COURS, 
   	   CLIQ AS MT_LIQ_EN_COURS, 
   	   CMAN AS MT_MAN_EN_COURS, 
   	   DLIQ AS MT_DISPO_LIQ, 
   	   RESENG AS MT_RESTE_A_LIQ_SUR_EJ, 
   	   DLRE AS MT_DISPO_EJ, 
   	   DATMAN, 
   	   NMAND, 
   	   MANDARC, 
   	   OBJET, 
   	   LIEU, 
   	   OBS, 
   	   TYPMAR, 
   	   TYPERIOD, 
   	   VALIDITE, 
   	   NATMAR, 
   	   SECTBU, 
   	   CAO, 
   	   DATNOTI, 
   	   DATDEB, 
   	   DATEJLIM, 
   	   DATSOLDE, 
   	   DATEJ, 
   	   NUMENG, 
   	   LIGNE, 
   	   MILLESI, 
   	   DATECAO, 
   	   DATFINMA, 
   	   INTERFACE, 
   	   ARTICLE, 
   	   NNMIXTE, 
   	   TYPACHAT, 
   	   TXIM, 
   	   DLGP, 
   	   PROCDART, 
   	   NDB, 
   	   T2 	
     FROM  SAGA_MARCHE_AGR
    WHERE  COLECT = 'D'
      AND  ANBU1 = '07'
      AND  VALIDITE = 'V'
      AND  (UAGTHEM <> '34000' OR NUBU1 <> '01')
   )';
Citation:
ERREUR Ó la ligne 63 :
ORA-00933: La commande SQL ne se termine pas correctement
Après MAJ :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
EXECUTE IMMEDIATE('
CREATE TABLE tbl_marche_ase
   AS
   SELECT  COLECT, 
   	   UAGTHEM, 
   	   ANBU1, 
   	   NUBU1, 
   	   NNM1, 
   	   PERIODE1, 
   	   PART1, 
   	   SUBSTR(NNM1,3,2) AS PLAGE_NUM,
   	   FOUR, 
   	   UAU, 
   	   MTMINI AS MT_MINIMUM, 
   	   MTMAXI AS MT_MAXIMUM, 
   	   MTINIT AS MT_INITIAL, 
   	   MTAVE AS MT_AVENANT, 
   	   MTVARI AS MT_VARIATION, 
   	   TOT AS MT_TOTAL, 
   	   MTPART AS MT_NONREPARTI, 
   	   CREAL AS MT_LIQ_ANT, 
   	   MT AS MT_EXERCICE_EN_COURS, 
   	   CLIQ AS MT_LIQ_EN_COURS, 
   	   CMAN AS MT_MAN_EN_COURS, 
   	   DLIQ AS MT_DISPO_LIQ, 
   	   RESENG AS MT_RESTE_A_LIQ_SUR_EJ, 
   	   DLRE AS MT_DISPO_EJ, 
   	   DATMAN, 
   	   NMAND, 
   	   MANDARC, 
   	   OBJET, 
   	   LIEU, 
   	   OBS, 
   	   TYPMAR, 
   	   TYPERIOD, 
   	   VALIDITE, 
   	   NATMAR, 
   	   SECTBU, 
   	   CAO, 
   	   DATNOTI, 
   	   DATDEB, 
   	   DATEJLIM, 
   	   DATSOLDE, 
   	   DATEJ, 
   	   NUMENG, 
   	   LIGNE, 
   	   MILLESI, 
   	   DATECAO, 
   	   DATFINMA, 
   	   INTERFACE, 
   	   ARTICLE, 
   	   NNMIXTE, 
   	   TYPACHAT, 
   	   TXIM, 
   	   DLGP, 
   	   PROCDART, 
   	   NDB, 
   	   T2 	
     FROM  SAGA_MARCHE_AGR
    WHERE  COLECT = ''D''
      AND  ANBU1 = ''07''
      AND  VALIDITE = ''V''
      AND  (UAGTHEM <> ''34000'' OR NUBU1 <> ''01'')
   )';
Citation:
ERREUR Ó la ligne 59 :
ORA-00933: La commande SQL ne se termine pas correctement
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 11h06   #6
Responsable Business Intelligence
 
Avatar de kalyparker
 
Femme
Consultant en Business Intelligence
Inscription : janvier 2007
Messages : 1 192
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : janvier 2007
Messages : 1 192
Points : 2 564
Points : 2 564
Pourquoi mets tu () après execute immediate ?
C'est peux être de là que viens le problème

[edit]en plus tu ouvre la parenthèse en dehors des ' ' et tu la ferme dedans[/edit]
kalyparker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2007, 11h13   #7
Membre actif
 
Inscription : novembre 2004
Messages : 311
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 311
Points : 157
Points : 157
Merci !!!
davy.g est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h07.


 
 
 
 
Partenaires

Hébergement Web