Erreur lors de l'execution de mon fichier SQL
Bonjour à tous,
Je ne connais pas grand chose en UNIX, je découvre et je dois executer un fichier SQL.
Après avoir transformer mon fichier au format UNIX en ligne de commande, j'essaye d'executer ce fichier SQL mais j'ai des erreurs qui me sont retournées :
Code:
1 2 3 4
|
line 3: DECLARE: command not found
line 4: syntax error near unexpected token `('
line 4: `PURGEDUREE NUMBER(12);' |
Et voici le contenu de mon fichier :
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
|
set serveroutput on
DECLARE
PURGEDUREE NUMBER(12);
PURGEDUREE:=30;
NUM_ROW NUMBER(12);
NUM_ROW:=0;
NUM_ROW_TOTAL NUMBER(12);
NUM_ROW_TOTAL:=0;
NB_ROW_COMMIT NUMBER(12);
NB_ROW_COMMIT:=500;
--Curseur sur les commandes Non Injectée datant de plus de 30 jours
CURSOR cdePurge IS
SELECT ID
FROM COMMANDE.TABLE_COMMANDE
WHERE DATE_ENREGISTREMENT > (sysdate - PURGEDUREE) AND ETAT_INJECTION = 'NON_INJ';
BEGIN
dbms_output.PUT_LINE('Debut de la purge sur les commandes NON_INJ datant de plus de 30 jours');
FOR CURRENT_ID in cdePurge LOOP
-- Incrémentation du numéro de ligne courante
NUM_ROW:=NUM_ROW+1;
-- Incrémentation du numéro de ligne totale
NUM_ROW_TOTAL:=NUM_ROW_TOTAL+1;
-- effacement des references de la commande et etats
delete from COMMANDE.TABLE_COMMANDE_DETAILS WHERE RID_COMMANDE=CURRENT_ID.ID;
delete from COMMANDE.TABLE_COMMANDE_XML WHERE RID_COMMANDE=CURRENT_ID.ID;
-- effacement de la commande
delete from COMMANDE.TABLE_COMMANDE WHERE ID=CURRENT_ID.ID;
-------------------
-- commit partiel
-------------------
IF NUM_ROW>NB_ROW_COMMIT THEN
NUM_ROW:=0;
commit;
END IF;
----------------------
-- FIN commit partiel
----------------------
END LOOP;
dbms_output.PUT_LINE('Fin de la purge sur les commandes NON_INJ datant de plus de 30 jours, nb commandes purgées : ' || NUM_ROW_TOTAL);
commit;
END;
/ |
Si quelqu'un peut m'expliquer mes erreurs et me dire si il y en a d'autres, merci d'avance ! :)