Спасибо за помощь, которую вы можете мне дать.
У меня возникла проблема с использованием OCI8 в PHP 7.2 с операторами PL/SQL в Oracle 9i. Я использую мгновенный клиент оракула 11.2.
SQL:
BEGIN
DBMS_OUTPUT.put_line('¡Hola Mundo!');
END;
PHP:
$rs = oci_parse($conn, $SqlCode);
$RExec = @oci_execute($rs);
ОШИБКА:
ORA-06550: строка 1, столбец 7: PLS-00103: обнаружен символ "" при ожидании одного из следующих действий: начало регистра объявление выхода для перехода к модулю цикла null прагма поднять возврат выбрать обновление в то время как с ‹‹ закрыть текущую удалить блокировку выборки вставить открыть точку сохранения отката установить sql выполнить фиксацию для всех каналов слияния Символ "" был проигнорирован. ORA-06550: строка 2, столбец 42: PLS-00103: обнаружен символ "" при ожидании одного из следующих действий: начало регистра объявление конца исключения выход из цикла goto if mod null прагма поднять возврат выбрать обновление в то время как с
У меня проблемы со всеми операторами PL/SQL в Oracle 9i, но если я попробую базовый оператор, такой как "SELECT * FROM some_table", он будет работать правильно.
Если я выполняю один и тот же оператор PL/SQL в базе данных Oracle 10 и 11, он работает нормально.
ОБНОВЛЕНИЕ 2020-02-04:
У меня есть портал PHP, в котором есть форма для сохранения скриптов (PL/SQL Oracle) в базе данных MYSQL, затем в другом представлении я выбираю скрипт, который хочу выполнить, поэтому я получаю скрипт (PL/SQL), который Я хочу работать в базе данных Oracle.
Закрывая проблему, я обнаружил, что если я прочитаю код или скрипт PL/SQL из базы данных MYSQL, а затем выполню его, я получу ошибку "ORA-06550: строка 1, столбец 7: PLS-00103: Обнаружено символ", но если я возьму код и сохраню его в переменной прямо в файле PHP, он его правильно выполнит.
Таким образом, проблема должна быть связана с проблемой кодирования символов, когда я вставляю или запрашиваю базу данных MYSQL, чтобы получить код pl/sql, который я намереваюсь выполнить в базе данных Oracle.
Спасибо.
$SqlCode
? Полагаю, я бы подумал, не является ли это проблемой разрыва строки/возврата каретки, исходя из сообщенной позиции ошибок. - person Alex Poole   schedule 31.01.2020