PLS-00103: Encountered the symbol "CREATE"

oracle, pls-00103

Solution

At line 5 there is a `/` missing.

There is a good answer on the differences between `;` and `/` here.

Basically, when running a `CREATE` block via script, you need to use `/` to let SQLPlus know when the block ends, since a PL/SQL block can contain many instances of `;`.

Further reference

SQL*Plus treats PL/SQL subprograms in the same manner as SQL commands, except that a semicolon ( ; ) or a blank line does not terminate and execute a block. Terminate PL/SQL subprograms by entering a period (.) by itself on a new line. You can also terminate and execute a PL/SQL subprogram by entering a slash (/) by itself on a new line.

. . .

SQL*Plus stores the subprograms you enter in the SQL buffer. Execute the current subprogram with a RUN or slash (/) command. A semicolon ( ; ) is treated as part of the PL/SQL subprogram and will not execute the command.

Problem

What is the problem with this package as it is giving an error? ``` CREATE OR REPLACE PACKAGE PKG_SHOW_CUST_DETAILS AS PROCEDURE SHOW_CUST_DETAILS( myArg VARCHAR2); END PKG_SHOW_CUST_DETAILS; CREATE OR REPLACE PACKAGE BODY PKG_SHOW_CUST_DETAILS AS PROCEDURE SHOW_CUST_DETAILS(myArg VARCHAR2) IS BEGIN DBMS_OUTPUT.PUT_LINE(myArg); END SHOW_CUST_DETAILS; END PKG_SHOW_CUST_DETAILS; / ``` On compilation of the above script, I am getting the following errors: ``` SQL> show errors Errors for PACKAGE PKG_SHOW_CUST_DETAILS: LINE/COL ERROR -------- ----------------------------------------------------------------- 6/1 PLS-00103: Encountered the symbol "CREATE" ``` The package is very simple and I am not able to compile it. I searched earlier answers on this error message and none of them did solve my problem. I am consistently getting this error for 2 more packages and I am stuck on this error message no matter what I do. I even tried to strip everything to the barest minimum as shown above, but the error message does not seem to go away. BTW I am executing this on command line SQL plus session after logging into my Oracle 11G database. YES- SET SERVEROUTPUT ON -- is executed and the error message has nothing to do with this command. What am I missing?

Original source

Related problems