sql >> Database >  >> RDS >> Oracle

PL/SQL-proces:probleem met formulering

Er zijn meerdere problemen met uw procedure.

  1. Je mist de CREATE sleutelwoord, en dat is de hoofdoorzaak van de fout bij het compileren. PLS-00103 .

Zie de documentatie voor meer details over de CREATE PROCEDURE statement om een ​​op zichzelf staande opgeslagen procedure of een oproepspecificatie te maken.

  1. De gegevenstypedeclaratie voor de IN-parameter is onjuist. Je moet het doen als:
EMP_USERNAME IN EMPLOYEE.EMP_USERNAME%TYPE
  1. De FOR LOOP is syntactisch incorrect.

Je zou het als volgt kunnen doen:

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.

Laten we het nu testen en zien:

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

PL/SQL procedure successfully completed.

SQL>


  1. PostgreSQL -moet voorkomen in de GROUP BY-component of worden gebruikt in een aggregatiefunctie

  2. PHP Serialize-functie - Geserialiseerde gegevens toevoegen aan mysql en vervolgens ophalen en weergeven

  3. MySQL en PHP:UTF-8 met Cyrillische tekens

  4. Gebruik mycli en leer MariaDB/MySQL comfortabel in een terminal!