Bonjour à tous,
j'ai un petit pb avec pl/sql.
En effet, lorsque je lance la procédure pl/sql suivante avec DELETE, tout fonctionne normalement, alors que si je cherche à optimiser mon code et que j'utilise TRUNCATE, j'ai un message d'erreur.
Pouvez-vous m'aider à résoudre ce problème ?
Par ailleurs, si vous avez des suggestions pour améliorer ce genre de requêtes, elles sont les bienvenues
-copie partielle d'une table d'un schéma dans un autre schéma, de façon régulière (c'est à dire tous les mois)
- création d'un fichier de "log" qui sauvegarde automatiquement les données affichées par le dbms_output.
Merci à tous
MarieO
Le message d'erreur est le suivant:
Error report:
ORA-06550: Ligne 7, colonne 10 :
PLS-00103: Symbole "TABLE" rencontré à la place d'un des symboles suivants :
:= . ( @ % ;
Symbole ":= inséré avant "TABLE" pour continuer.
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Voici le code concerné:
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
20
21 DEFINE ValAnnee = 2007 DEFINE ValMois = 12 DEFINE ValPeriode = 200712 DECLARE iDateDeb VARCHAR2(25) := To_CHAR(sysdate,'DD/MM/YYYY, HH24:MI:SS'); iDateFin VARCHAR2(25); iPeriode VARCHAR2(6) := &ValPeriode; iNb NUMBER; BEGIN TRUNCATE TABLE schema1.maTable; INSERT INTO schema1.maTable (id_info, nom, prenom, annee, mois) SELECT DISTINCT id_info, nom, prenom, annee, mois FROM schema2.maTable WHERE annee=&ValAnnee AND mois<=&ValMois ; SELECT COUNT(*) INTO iNb FROM schema1.maTable; iDateFin := To_CHAR(sysdate,'DD/MM/YYYY, HH24:MI:SS'); dbms_output.put_line('Consolidation / période ' || iPeriode || ' ---'); dbms_output.put_line (' durée du traitement : ' || iDateDeb || ' - ' || iDateFin); dbms_output.put_line('Nb dans la table : ' || iNb); END; /
Partager