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?