Я написал себе небольшую утилиту PL / SQL. Выполнение его (с использованием SQL -Developer) на одной БД (установка Oracle XE на моем Windows 10 ноутбуке) работает отлично, но при выполнении на другой БД (также Oracle XE, но на Linux server) Я получаю ошибки компиляции в моем скрипте!?!? Как это может быть?
Я получаю следующие ошибки:
ORA-06550: line 17, column 35:
PLS-00491: numeric literal required
ORA-06550: line 18, column 35:
PLS-00491: numeric literal required
ORA-06550: line 19, column 35:
PLS-00491: numeric literal required
ORA-06550: line 20, column 35:
PLS-00491: numeric literal required
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
Ссылки указаны в этом разделе в начале моего сценария:
DECLARE
-- limits and boundaries
MAX_NAME_LENGTH CONSTANT NUMBER(3) := 30; -- for table and column names
MAX_VALUE_LENGTH CONSTANT NUMBER(5) := 10000; -- for column values
-- our starting point:
m_owner VARCHAR2(MAX_VALUE_LENGTH) := 'C##TEST';
m_start_table_name VARCHAR2(MAX_NAME_LENGTH) := 'XML_MELDUNG_QUEUE';
m_start_column_name VARCHAR2(MAX_NAME_LENGTH) := 'XML_MELDUNG_ID';
m_start_value VARCHAR2(MAX_VALUE_LENGTH) := '5647';
...
и точное место оказалось использованием констант, т. е. предложения "... (MAX _....)".
Кажется, что во второй системе определения CONSTANT и определения Использование этих констант в дальнейших декларациях не работает так же, как при нацеливании на мою локальную БД.
Я полностью озадачен! В чем здесь проблема? Почему такое объявление PL / SQL работает с использованием одной Oracle XE DB, а не с другой? Я имею в виду: я бы понял, если какая-то сущность не может быть найдена, но ошибки компиляции (или нет) в зависимости от используемой БД ???
Любая идея или указатель?