Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROMPT Vous allez inscrire un nouvel employé
- PROMPT saisissez le nom
- ACCEPT nom
- SELECT empno, ename, deptno FROM emp WHERE job = 'MANAGER';
- PROMPT saisissez le numéro du supérieur hiérarchique
- ACCEPT sup
- PROMPT saisissez le poste
- ACCEPT poste
- PROMPT saisissez le département
- ACCEPT dep
- PROMPT saisissez le salaire
- ACCEPT salaire
- PROMPT saisissez le commission
- ACCEPT com
- PROMPT saisissez la _date d''embauche
- ACCEPT hdate
- DECLARE
- numero emp.empno%TYPE;
- nom emp.ename%TYPE;
- poste emp.job%TYPE;
- sup emp.mgr%TYPE;
- hdate emp.hiredate%TYPE;
- salaire emp.sal%TYPE;
- com emp.comm%TYPE;
- dep emp.deptno%TYPE;
- dept_ok NUMBER;
- test NUMBER;
- erreur NUMBER;
- depass_excep EXCEPTION;
- nosup EXCEPTION;
- sales_nocomm EXCEPTION;
- nosales_comm EXCEPTION;
- nodept EXCEPTION;
- PRAGMA EXCEPTION_INIT
- (depass_excep, -1438);
- BEGIN
- SELECT (MAX(empno)+1) INTO numero FROM emp;
- SELECT COUNT(*) INTO test FROM emp WHERE empno = '&sup';
- SELECT COUNT(deptno) INTO dept_ok FROM dept WHERE deptno = &dep;
- poste := UPPER ('&poste');
- BEGIN
- IF test = 0 THEN
- sup := NULL;
- erreur := erreur+1;
- RAISE nosup;
- END IF;
- END;
- BEGIN
- IF '&poste' = 'SALESMAN' AND ('&com' IS NULL) THEN
- erreur := erreur+1;
- RAISE sales_nocomm;
- ELSIF '&poste' != 'SALESMAN' AND ('&com' IS NOT NULL) THEN
- erreur := erreur+1;
- RAISE nosales_comm;
- END IF;
- END;
- BEGIN
- IF dept_ok = 0 THEN
- erreur := erreur+1;
- RAISE nodept;
- END IF;
- END;
- BEGIN
- IF erreur = 0 THEN
- IF '&poste' = 'SALESMAN' THEN
- INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
- VALUES (numero, '&nom', '&poste', '&sup', '&hdate', '&salaire', '&com', '&dep');
- ELSIF '&poste' != 'SALESMAN' THEN
- INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, deptno)
- VALUES (numero, '&nom', '&poste', '&sup', '&hdate', '&salaire', '&dep');
- END IF;
- ELSE
- DBMS_OUTPUT.PUT_LINE('Le traitement a rencontré ' || erreur || ' erreurs');
- END IF;
- END;
- EXCEPTION
- WHEN depass_excep THEN
- DBMS_OUTPUT.PUT_LINE('Dépassement de format.');
- WHEN nosup THEN
- DBMS_OUTPUT.PUT_LINE('Manager inexistant.');
- WHEN sales_nocomm THEN
- DBMS_OUTPUT.PUT_LINE('SALESMAN sans commission.');
- WHEN nosales_comm THEN
- DBMS_OUTPUT.PUT_LINE('commission sur autre que SALESMAN.');
- WHEN nodept THEN
- DBMS_OUTPUT.PUT_LINE('Département inexistant');
- END;
- /
- SELECT * FROM emp WHERE empno = (SELECT MAX(empno) FROM emp);
- ROLLBACK;
Advertisement
Add Comment
Please, Sign In to add comment