Je rencontre des problèmes lors de la création d'une procédure qui effectue une opération. Fondamentalement, j'ai deux tables, l'un est le tableau de revenu un autre est RECURRINGTRANSACTION. Je prévois de créer un travail dans Oracle 11g qui exécutent une procédure quotidienne. la procédure aura une date de début, une date de fin et un nombre d'occurrences donc ma procédure devrait vérifier si la date de début est la date du jour et le nombre d'occurrences! = 0 alors elle devrait insérer une ligne dans ma 1ère table qui est la table INCOME. Voici mes descriptions et données de table. Problèmes de création d'une procédure pl/sql avec% ROWTYPE
create or replace procedure recurTransDaily(currTransID in number)
is
type r_currentTransRow is record(
RECTRANSACTIONID RECURRINGTRANSACTION.RECTRANSACTIONID%TYPE,
AMOUNT RECURRINGTRANSACTION.AMOUNT%TYPE,
DESCRIPTION RECURRINGTRANSACTION.DESCRIPTION%TYPE,
ISEXPENSE RECURRINGTRANSACTION.ISEXPENSE%TYPE,
ISINCOME RECURRINGTRANSACTION.ISINCOME%TYPE,
NOOFOCCURENSES RECURRINGTRANSACTION.NOOFOCCURENSES%TYPE,
TRANSACTIONDATE RECURRINGTRANSACTION.TRANSACTIONDATE%TYPE,
TRANSSACTIONENDDATE RECURRINGTRANSACTION.TRANSSACTIONENDDATE%TYPE,
CATEGORYID RECURRINGTRANSACTION.CATEGORYID%TYPE,
PAYEEID RECURRINGTRANSACTION.PAYEEID%TYPE,
RECURRINGTRANSACTIONTYPE RECURRINGTRANSACTION.RECURRINGTRANSACTIONTYPE%TYPE,
PERSONID RECURRINGTRANSACTION.PERSONID%TYPE);
BEGIN
select *
into r_currentTransRow
from RECURRINGTRANSACTION where RECTRANSACTIONID=currTransID;
if to_char(r_currentTransRow.TRANSACTIONDATE,'MM-dd- yyyy')=to_char(sysdate,'MM-dd-yyyy') then
-- insert a record into income table
insert into income(AMOUNT,DESCRIPTION,TRANSACTIONDATE,CATEGORYID,PAYEEID,PERSONID) values
(r_currentTransRow.AMOUNT,r_currentTransRow.DESCRIPTION,r_currentTransRow.TRANSACTIONDATE,
r_currentTransRow.CATEGORYID,r_currentTransRow.PAYEEID,r_currentTransRow.PERSONID);
-- update the present RECURRINGTRANSACTION row with TRANSACTIONDATE=sysdate+1 and NOOFOCCURENSES=NOOFOCCURENSES-1
update RECURRINGTRANSACTION set RECURRINGTRANSACTION.TRANSACTIONDATE=to_char(sysdate+1,'MM-dd-yyyy'),
RECURRINGTRANSACTION.NOOFOCCURENSES=r_currentTransRow.NOOFOCCURENSES-1
WHERE RECURRINGTRANSACTION.RECTRANSACTIONID=r_currentTransRow.RECTRANSACTIONID;
commit;
end if;
END;
Si j'exécute le script ci-dessus, il me donne les erreurs ci-dessous. Je suis nouveau à PL/SQL. Quelqu'un peut-il expliquer la signification des erreurs et la façon de les résoudre
: Merci beaucoup pour la réponse rapide et le code mis à jour. Je vais essayer de l'utiliser et vous faire savoir si je suis confronté à des problèmes. –
J'ai utilisé le même code que celui que vous avez fourni et la procédure a été créée. mais il me donne les erreurs ci-dessous quand j'ai essayé d'exécuter avec '171' comme paramètre à la procédure: ORA-01843: mois pas valide ORA-06512: à "HR.RECURTRANSDAILY", ligne 35 ORA- 06512: à la ligne 1 01843. 00000 - "mois non valide" –
ok laissez-moi le vérifier –