PLS-00103: обнаружен символ "СОЗДАТЬ"

В чем проблема с этим пакетом, так как он выдает ошибку?

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;
/

При компиляции вышеуказанного скрипта я получаю следующие ошибки:

SQL> покажи ошибки
Ошибки для PACKAGE PKG_SHOW_CUST_DETAILS:

LINE/COL ERROR
-------- -----------------------------------------------------------------
6/1      PLS-00103: обнаружен символ "СОЗДАТЬ"

Пакет очень прост, и я не могу его скомпилировать. Я искал более ранние ответы на это сообщение об ошибке, и ни один из них не решил мою проблему. Я последовательно получаю эту ошибку для еще 2 пакетов, и я застреваю в этом сообщении об ошибке, независимо от того, что я делаю. Я даже пытался обрезать все до минимума, как показано выше, но сообщение об ошибке, похоже, не исчезло. Кстати, я выполняю это в сеансе SQL плюс командной строки после входа в базу данных Oracle 11G. ДА - SET SERVEROUTPUT ON - выполняется, и сообщение об ошибке не имеет ничего общего с этой командой.

Что мне не хватает?

4 ответа

В строке 5 есть / отсутствует.

Есть хороший ответ на различия между ; а также / здесь

В основном, когда работает CREATE блокировать через скрипт, вам нужно использовать / сообщить SQLPlus о завершении блока, поскольку блок PL/SQL может содержать много экземпляров ;,

Для меня / должен был быть в новой строке.

Например

create type emp_t;/

не сработало

но

create type emp_t;

/

работал.

В моем случае EXECUTE IMMEDIATE ('CREATE TABLE ...') работает, например:

      DECLARE 
   myVar INT;
BEGIN
SELECT 2 INTO myVar FROM dual;
IF myVar > 1 THEN
    EXECUTE IMMEDIATE('Create Global Temporary Table TestTemp ( id VARCHAR2(2) ) ON COMMIT PRESERVE ROWS');
END IF;
END;

Ссылка на создание таблицы как в PL / SQL?

Запустите объявление пакета и тело отдельно.

Другие вопросы по тегам