Похоже, ваш клиент интерпретирует €
как переменную подстановки :
SQL> select '€' from dual;
Enter value for euro:
Это поведение можно отключить с помощью set define off
в SQL * Plus, SQL Developerили SQLcl:
SQL> set define off
SQL> select '€' from dual;
'&EURO
------
€
1 row selected.
SQL> set define on; -- optional but restores behaviour
Это на самом деле не имеет ничего общего с PL / SQL или даже с SQL;это просто поведение клиента в тот момент, когда вы пытаетесь скомпилировать пакет - клиент интерпретирует &
перед тем, как передать какой-либо код в базу данных для обработки.Это также означает, что сеансы , вызывающие вашего пакета, не должны беспокоиться об этом параметре.