Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- accept n prompt "Veuillez indiquer le nombre d'employé : ";
- SET verify OFF;
- SET serveroutput ON;
- DECLARE
- e_trop EXCEPTION;
- e_zero EXCEPTION;
- e_negative EXCEPTION;
- e_numeric EXCEPTION;
- v_ename emp.ename%TYPE;
- v_sal emp.sal%TYPE;
- nb_ligne NUMBER(4);
- i NUMBER := 1;
- nb VARCHAR(5) := '&n';
- CURSOR c IS SELECT ename, sal FROM emp ORDER BY sal DESC;
- BEGIN
- SELECT COUNT(*) INTO nb_ligne FROM emp;
- IF owa_pattern.match(nb, '^-\D') THEN
- RAISE e_numeric;
- ELSE
- nb := TO_NUMBER(nb);
- IF nb < 0 THEN
- RAISE e_negative;
- ELSIF nb > nb_ligne THEN
- RAISE e_trop;
- ELSE
- RAISE e_zero;
- END IF;
- OPEN c;
- FOR i IN 1..nb LOOP
- IF i = 1 THEN
- DBMS_OUTPUT.put_line('ename | sal');
- END IF;
- FETCH c INTO v_ename, v_sal;
- DBMS_OUTPUT.put_line(v_ename || ' | ' || v_sal);
- END LOOP;
- CLOSE c;
- END IF;
- EXCEPTION
- WHEN e_numeric THEN
- DBMS_OUTPUT.put_line('La valeur de n doit être un nombre !');
- WHEN e_zero THEN
- DBMS_OUTPUT.put_line('La valeur de n ne peut pas etre 0');
- WHEN e_negative THEN
- DBMS_OUTPUT.put_line('n ne peut pas etre inferieur a 0, il doit etre dans l''intervalle 1 - ' || nb_ligne);
- WHEN e_trop THEN
- DBMS_OUTPUT.put_line('n ne peut pas etre superieur a ' || nb_ligne || ', mais voici quand meme les resultats :');
- OPEN c;
- DBMS_OUTPUT.put_line('ename | sal');
- FOR i IN 1..nb_ligne LOOP
- FETCH c INTO v_ename, v_sal;
- DBMS_OUTPUT.put_line(v_ename || ' | ' || v_sal);
- END LOOP;
- CLOSE c;
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement