Problème variable numérique dans requête
Bonjour à tous,
j'ai un léger soucis avec 2 petites procédures PL/SQL.
En fait, ma première procédure, va chercher une date dans une table > créer une table temporaire > stocke la date dans cette table > et update la date dans la table principale :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| CREATE OR REPLACE PROCEDURE SCHEMA.P_DATE_CHECKPOINT
IS
s#QUERY_SEL_DATE DATE;
s#DATE_TMP DATE;
BEGIN
s#DATE_TMP:= '01/01/1900';
s#QUERY_SEL_DATE:=
'SELECT CP.LAST_RUN_DATE
FROM CHECK_POINT CP
WHERE CP.CP_ID = 5';
EXECUTE IMMEDIATE 'CREATE TABLE CHECK_POINT_TMP (LAST_RUN_DATE DATE)';
EXECUTE IMMEDIATE 'INSERT INTO CHECK_POINT_TMP (LAST_RUN_DATE)
VALUES ('|| s#QUERY_SEL_DATE ||')';
EXECUTE IMMEDIATE 'UPDATE CHECK_POINT CP
SET LAST_RUN_DATE = '|| s#DATE_TMP ||
'WHERE CP.CP_ID = 5';
END;
/ |
Et ma 2ème procédure va récupère la date stockée dans la table temporaire > la met à la place de la date de la table principale > et supprime la table temporaire.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE OR REPLACE PROCEDURE SCHEMA.P_CHECKPOINT_INITIAL_DATE
IS
s#QUERY_SEL_DATE_TMP DATE;
BEGIN
s#QUERY_SEL_DATE_TMP:=
'SELECT CPT.LAST_RUN_DATE
FROM CHECK_POINT_TMP CPT';
EXECUTE IMMEDIATE 'UPDATE CHECK_POINT CP
SET LAST_RUN_DATE = '|| s#QUERY_SEL_DATE_TMP
|| 'WHERE CP.CP_ID = 5';
EXECUTE IMMEDIATE 'DROP TABLE CHECK_POINT_TMP';
END;
/ |
Lorsque je créer ces proc, pas de soucis, mais lorsque j'essaie de les executer, j'ai cette erreur (la même pour les 2), voici celle de la première :
ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique
ORA-06512: à "SCHEMA.P_DATE_CHECKPOINT", ligne 7
ORA-06512: à ligne 1
Quelqu'un peut-il m'aider? Je ne sais pas si j'ai vraiment fait une erreur ou bien si c'est une histoire de quote mal placée ou manquante...