Probleme oracle

celeste87 Messages postés 4 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 1 juillet 2010 - 27 déc. 2009 à 02:08
celeste87 Messages postés 4 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 1 juillet 2010 - 27 déc. 2009 à 18:08
Slt à tous
j'ai un probleme avec mon package MAJ_SALARIES(qui permet de mettre à jour la table salarié et pour un salarié si j'insere un enfant je mets à jour le nombre d'enfants) Voici mon package
CREATE OR REPLACE BODY PACKAGE MAJ_SALARIES is
procedure P_INS_SALARIES(CODE_F NUMBER,CODE_P NUMBER,NUMERO_ET NUMBER, NOM_S varchar2,PRENOM_S VARCHAR2,DATE_NAISSANCE DATE,CODE_POST NUMBER,NUM NUMBER,TELEPHONE_S NUMBER,EMAIL_S VARCHAR2,NUMERO_SS_S NUMBER, ANCIENNETE_S NUMBER, DATE_ENTREE_S DATE, NOMBRE_ENFANTS_S NUMBER)is
begin
if(CODE_F is not null and CODE_P is not null and NUMERO_ET is not null and NOM_S is not null and PRENOM_S is not null and DATE_NAISSANCE is not null and CODE_POST is not null and NUM is not null and TELEPHONE_S is not null and EMAIL_S is not null and NUMERO_SS_S is not null and ANCIENNETE_S is not null and DATE_ENTREE_S is not null NOMBRE_ENFANTS_S is not null) then

insert into SALARIES values (INC_MATRICULE.nextval,CODE_F,CODE_P,NUMERO_ET ,upper(NOM_S),initcap(PRENOM_S),TO_date(DATE_NAISSANCE,'DD/MM/YYYY'), CODE_POST, NUM, TELEPHONE_S,EMAIL_S, NUMERO_SS_S, ANCIENNETE_S,DATE_ENTREE_S, NOMBRE_ENFANTS_S);
DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' enregistrement(s) inséré(s)') ;
end if;
if( NOM_S is null)then
DBMS_OUTPUT.PUT_LINE('entrer le nom du salarié ayant pour numéro'||':'||MAT||'.');
end if;
if( PRENOM_S is null)then
DBMS_OUTPUT.PUT_LINE('entrer le prenom du salarié ayant pour numéro'||':'||MAT||'.');
end if;

if( DATE_NAISSANCE is null)then
DBMS_OUTPUT.PUT_LINE('entrer la date de naissance du salarié ayant pour numéro'||':'||MAT||'.');
end if;
if( TELEPHONE_S is null)then
DBMS_OUTPUT.PUT_LINE('entrer le numéro de téléphone du salarié ayant pour numéro'||':'||MAT||'.');
end if;
if( EMAIL_S is null)then
DBMS_OUTPUT.PUT_LINE('entrer l'email du salarié ayant pour numéro'||':'||MAT||'.');
end if;

if( NUMERO_SS_S is null)then
DBMS_OUTPUT.PUT_LINE('entrer le numéro de sécurité social ayant pour numéro'||':'||MAT||'.');
end if;

if( DATE_ENTREE_S is null)then
DBMS_OUTPUT.PUT_LINE('entrer la date d'entrée du salarié ayant pour numéro'||':'||MAT||'.');
end if;
end;


procedure P_DEL_SALARIES(MAT NUMBER)is
begin
delete from SALARIES where MATRICULE=MAT;
DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' enregistrement(s) supprimé(s)') ;
end;

procedure P_UPD_SALARIES (MAT NUMBER,CODE_F NUMBER,CODE_P NUMBER,NUMERO_ET NUMBER, NOM_S varchar2,PRENOM_S VARCHAR2,DATE_NAISSANCE DATE,CODE_POST NUMBER,NUM NUMBER,TELEPHONE_S NUMBER,EMAIL_S VARCHAR2,NUMERO_SS_S NUMBER, ANCIENNETE_S NUMBER, DATE_ENTREE_S DATE, NOMBRE_ENFANTS_S NUMBER) is
begin
update SALARIES set NOM=NOM_S, PRENOM= PRENOM_S, DATE_DE_NAISSANCE= DATE_NAISSANCE , CODE_FAMILLE=CODE_F, CODE_POSTE=CODE_P , NUMERO_ETS=NUMERO_ET,CODE_POSTAL=CODE_POST, TELEPHONE= TELELEPHONE_S, EMAIL=EMAIL_S, NUMERO_SS=NUMERO_SS_S, DATE_ENTREE_S=TO_date(DATE_ENTREE_S,'DD/MM/YYYY') where MATRICULE=MAT;
DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' enregistrement(s) mis à jour') ;

end;

function FC_ANCIENNETE_SALARIES( MAT NUMBER) return NUMBER is
ANCIEN NUMBER;
ENTREE DATE;
begin
SELECT DATE_ENTREE into ENTREE FROM SALARIES WHERE MATRICULE= MAT;
SELECT months_between(trunc(sysdate,'MONTH'),trunc(ENTREE,'MONTH')) / 12 into ANCIEN FROM Dual;
Update SALARIES SET ANCIENNETE=ANCIEN WHERE MATRICULE=MAT;
return ANCIEN;
end;

function FC_NOMBRE_ENFANTS_S(MAT NUMBER,NUMERO_ENFANT NUMBER) return NUMBER
is
begin
Update SALARIES SET NOMBRE_ENFANTS=NOMBRE_ENFANTS+1 WHERE MATRICULE=MAT ;
return NOMBRE_ENFANTS;
end;
end MAJ_SALARIES;
[b]
et j'obtiens cette erreur :ORA-00922: option erronée ou absente/b

Voici les tables que j'utilise:
create table SALARIES(
MATRICULE NUMBER(10),
CODE_FAMILLE NUMBER(10),
CODE_POSTE NUMBER(5),
NUMERO_ETS number(10),
NOM varchar2(20) not null,
PRENOM varchar2(20) not null,
DATE_DE_NAISSANCE_S date not null,
CODE_POSTAL NUMBER(5),
NUMERO NUMBER(10),
TELEPHONE NUMBER(10)not null,
EMAIL VARCHAR2(20) not null,
NUMERO_SS NUMBER(20) NOT NULL,
ANCIENNETE NUMBER(2) not null,
DATE_ENTREE DATE not null,
NOMBRE_ENFANTS not null,
constraint SALARIES_pk primary key (MATRICULE),
constraint VILLE_S_Fk FOREIGN key (CODE_POSTAL) REFERENCES VILLE(CODE_POSTAL),
constraint ENTREPRISE_S_Fk FOREIGN key (NUMERO_ETS) REFERENCES ENTREPRISE(NUMERO_ETS),
constraint ADRESSEE_S_Fk FOREIGN key (NUMERO) REFERENCES ADRESSE (NUMERO),
constraint POSTE_S_Fk FOREIGN key (CODE_POSTE) REFERENCES POSTE (CODE_POSTE),
constraint NOM_S_maj check (NOM= UPPER(NOM)),
CONSTRAINT ANCIENNETE_MAJ CHECK (ANCIENNETE >=0),
CONSTRAINT PRENOM_S_MAJ CHECK (PRENOM=INITCAP(PRENOM)),
CONSTRAINT NUMERO_SS_MAJ CHECK (NUMERO_SS >0),
CONSTRAINT NOMBRE_ENFANTS_MAJ CHECK (NOMBRE_ENFANTS>=0)
);



create table AVOIR(
MATRICULE NUMBER(10) REFERENCES SALARIES(MATRICULE),
NUM_ENFANT NUMBER(10)REFERENCES ENFANTS(NUM_ENFANT),
constraint AVOIR_pk primary key (MATRICULE,NUM_ENFANT),
);


Table enfants
create table ENFANTS(
NUM_ENFANT number(10),
NOM_E varchar2(20) not null,
PRENOM_E VARCHAR2(20) not null,
DATE_DE_NAISSANCE DATE NOT NULL,
AGE_ENFANT NUMBER(10) DEFAULT 0 not null,
constraint ENFANTS_pk primary key (NUM_ENFANT),
constraint NOM_E_MAJ check (NOM_E=upper(NOM_E)),
constraint PRENOM_E_maj check (PRENOM_E=initcap(PRENOM_E)),
constraint AGE_maj check(AGE_ENFANT>=0)
);
Merci d'avance

1 réponse

celeste87 Messages postés 4 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 1 juillet 2010
27 déc. 2009 à 18:08
c'est bon j'ai trouvé mon probleme..Dsolé pour le derangement
0
Rejoignez-nous