execution partielle d'un script PL/SQL
version d'Oracle 9.2...
bonjour,
le script suivant est censé vérifier l'existence d'une table dans mon schema et si elle n'existe pas la créer mais aussi supprimer une autre table en basculant ses données dans la nouvelle... Il doit aussi aller modifier des references à l'ancienne table dans deux tables de reference...
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
| DECLARE
I NUMBER;
BEGIN
SELECT COUNT(*)
INTO I
FROM USER_TABLES
WHERE TABLE_NAME = 'PRP_GMSTLXUSG002TLX002_____DH';
IF I=0
THEN
EXECUTE IMMEDIATE
'CREATE TABLE PRP_GMSTLXUSG002TLX002_____DH '||
'( ORIGINATING_FILE VARCHAR2(249 BYTE) NOT NULL ,'||
' REFERENCE_NUMBER NUMBER(38) NOT NULL ,'||
' ORIGINATOR_ADDRESS VARCHAR2(249 BYTE),'||
' NCC VARCHAR2(249 BYTE),'||
' DOUBLE_SIGNATURE VARCHAR2(249 BYTE),'||
' DESTINATION_ADDRESS VARCHAR2(249 BYTE),'||
' DESTINATION_IATA_COUNTRY VARCHAR2(249 BYTE),'||
' DESTINATION_IATA_CENTER VARCHAR2(249 BYTE),'||
' TELEX_DIAL_CODE NUMBER(38),'||
' NUMBER_OF_MESSAGES VARCHAR2(249 BYTE),'||
' CHARGEABLE_TRAFIC NUMBER(38),'||
' DURATION NUMBER(38),'||
' FIRST_DAY_OF_ACTIVITY VARCHAR2(249 BYTE),'||
' LAST_DAY_OF_ACTIVITY VARCHAR2(249 BYTE),'||
' STATUS NUMBER(38) NOT NULL ,'||
' AVAILABLE VARCHAR2(249 BYTE),'||
' CHG_WHO VARCHAR2(249 BYTE),'||
' FREE_COMMENT VARCHAR2(249 BYTE),'||
' ERROR_CODE VARCHAR2(249 BYTE),'||
' CHG_DATETIME DATE'||
')';
EXECUTE IMMEDIATE
'CREATE UNIQUE INDEX PK_GMSTLXUSG002TLX002_____DH ON PRP_GMSTLXUSG002TLX002_____DH '||
'(ORIGINATING_FILE, REFERENCE_NUMBER, STATUS)'||
'TABLESPACE TS_SVCCONFIG_IDX';
EXECUTE IMMEDIATE
'ALTER TABLE PRP_GMSTLXUSG002TLX002_____DH ADD ('||
'CONSTRAINT PK_GMSTLXUSG002TLX002_____DH '||
'PRIMARY KEY (ORIGINATING_FILE, REFERENCE_NUMBER, STATUS)'||
'USING INDEX TABLESPACE TS_SVCCONFIG_IDX )';
INSERT INTO PRP_GMSTLXUSG002TLX002_____DH
SELECT *
FROM PRP_GMSTLXAPI002TLX002_____DH;
EXECUTE IMMEDIATE 'drop table PRP_GMSTLXAPI002TLX002_____DH';
UPDATE PRP_FIELD_DESCRIPTION
SET PD_TABLE_NAME = 'PRP_GMSTLXUSG002TLX002_____DH'
WHERE PD_TABLE_NAME = 'PRP_GMSTLXAPI002TLX002_____DH';
UPDATE PRP_METATABLE
SET PM_TABLE_NAME = 'PRP_GMSTLXUSG002TLX002_____DH'
WHERE PM_TABLE_NAME = 'PRP_GMSTLXAPI002TLX002_____DH';
COMMIT;
END IF;
END; |
mon problème est le suivant:
-le script crée bien la nouvelle table
-mais il ne supprime pas l'ancienne table...
-il ne modifie pas les tables de reference non plus...
-sans pour autant me renvoyer d'erreur me disant qu'il n'a pas pu le faire
(d'ailleurs à première vue le script marche parfaitement)
Si quelqu'un a des idées sur ce qui pourrait bien clocher...
Re: execution partielle d'un script PL/SQL
Citation:
Envoyé par dyvim
-mais il ne supprime pas l'ancienne table...
sans DROP ça parait logique :aie:
Re: execution partielle d'un script PL/SQL
Citation:
Envoyé par Fred_D
Citation:
Envoyé par dyvim
-mais il ne supprime pas l'ancienne table...
sans DROP ça parait logique :aie:
tu es fatigué toi :aie:
Code:
EXECUTE IMMEDIATE 'drop table PRP_GMSTLXAPI002TLX002_____DH';