No dota found_procédure sql
raminata Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaye de faire cette procédure qui reçoit une date et le code d'utilisateur en paramètre . Si la date est antérieure à la date de jour - 2 ans et si c"est le bon code utilisateur, la procédure doit archiver lles projets antérieure à la date calculée
J'ai bien sûr les tables PROJET, MEMBRE, PROJET_ARCHIVE dans ma BDD.
La compilation se fait sans erreur, mais j'ai un data found à execution, alors que les données de execution existent dans les tables. Quelqu'un peut aider? Merc
--------------------------------------------------------------
create or replace procedure SP_ARCHIVE_PROJET(P_I_DATE in date, P_I_UTILISATEUR in Varchar2) is
V_DATE_ARC date;
V_EST_ADMINITRATEUR number;
begin
select DATE_FIN_PRO into V_DATE_ARC
from TP3_PROJET
where DATE_FIN_PRO < P_I_DATE;
select EST_ADMINISTRATEUR_MEM into V_EST_ADMINITRATEUR
from TP3_MEMBRE
where UTILISATEUR_MEM = P_I_UTILISATEUR;
if (to_date(P_I_DATE)-to_date(V_DATE_ARC)) > 730 and V_EST_ADMINITRATEUR = 1 then
insert into TP3_PROJET_ARCHIVE
select*
from TP3_PROJET
where DATE_FIN_PRO < V_DATE_ARC;
delete from TP3_PROJET
where DATE_FIN_PRO < V_DATE_ARC;
else
raise_application_error(-20061, 'L''archivage est annulé car la date > 2 ans ou l''utilisateur n''est pas un adm');
end if;
end;
/
execute SP_ARCHIVE_PROJET(to_date('2023-01-01','RRRR-MM-DD'),'ADMRoch.al45');
- No dota found_procédure sql
- Nº sur clavier ✓ - Forum Windows
- No such file or directory ✓ - Forum Linux / Unix
- No epg found - Forum Box et Streaming vidéo
- No signal tv - Guide
- No video input ✓ - Forum Matériel & Système
2 réponses
Tout d'abord, vous utilisez la mauvaise syntaxe pour comparer les dates. Vous devez utiliser la fonction YEARS_BETWEEN
pour comparer les différences entre les dates en années. Deuxièmement, vous avez une erreur dans votre logique de comparaison : vous comparez le résultat de la soustraction de P_I_DATE
de V_DATE_ARC
à 730, alors que vous devriez comparer la différence en années entre ces deux dates à 2.
Bonjour,
Le problème est que je ne trouve pas sa syntaxe ni sur google ni sur Oracle Cloud
https://docs.oracle.com/search/?word=years_between&pg=1&size=10&product=e57185-01&book=SQRLG&lang=en
j'ai essayé datediff, mais kil me l'a connait pas n'en plus
V_DIF := DATEDIFF(P_I_DATE - V_DATE_ARC, 'year');
Merci pour votre aide.