Oracle
 sql >> Base de données >  >> RDS >> Oracle

Processus PL/SQL :problème de formulation

Il y a plusieurs problèmes avec votre procédure.

  1. Il vous manque le CRÉER mot clé, et c'est la cause première de l'erreur de temps de compilation. PLS-00103 .

Voir la documentation pour plus de détails sur instruction CREATE PROCEDURE pour créer une procédure stockée autonome ou une spécification d'appel.

  1. La déclaration du type de données pour le paramètre IN est incorrecte. Vous devez le faire comme :
EMP_USERNAME IN EMPLOYEE.EMP_USERNAME%TYPE
  1. La boucle FOR est syntaxiquement incorrecte.

Vous pouvez le faire comme :

SQL> CREATE OR REPLACE
  2  PROCEDURE deploy_emp(
  3      i_emp emp.empno%type)
  4  IS
  5    emp_user VARCHAR2(50);
  6  BEGIN
  7    FOR indx IN
  8    (SELECT ename FROM emp
  9    )
 10    LOOP
 11      BEGIN
 12        BEGIN
 13          SELECT ename INTO emp_user FROM emp WHERE empno = i_emp;
 14        EXCEPTION
 15        WHEN NO_DATA_FOUND THEN
 16          emp_user := NULL;
 17        END;
 18      END;
 19    END LOOP;
 20    dbms_output.put_line(emp_user);
 21  END deploy_emp;
 22  /

Procedure created.

SQL> sho err
No errors.

Maintenant, testons-le et voyons :

SQL> set serveroutput on
SQL> EXEC deploy_emp(7369);
SMITH

PL/SQL procedure successfully completed.

SQL>