PHP 7.2 OCI8 Oracle 9i Ошибка на PL / SQL Код: ORA-06550: строка 1, столбец 7: PLS-00103: Обнаружен символ "" - PullRequest
1 голос
/ 31 января 2020

Спасибо за помощь, которую вы можете оказать мне.

У меня проблема с использованием OCI8 в PHP 7.2 с инструкциями PL / SQL в Oracle 9i. Я использую oracle мгновенный клиент 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 : Обнаружен символ "" при ожидании одного из следующих действий: в начале регистра объявляется выход для goto, если l oop mod null прагма повышение возвращение выбор обновление, в то время как с << закрыть текущее удаление выборка блокировка вставка открытый набор точек отката отката sql выполнить фиксацию для объединения каналов Символ "" был проигнорирован. <strong>ORA-06550 : строка 2, столбец 42: PLS-00103 : Обнаружен символ "" при ожидании одного из следующих действий: начальный регистр, объявить завершение исключения конца для goto, если l oop mod null прагма повышение возвращение выбор обновление при


У меня проблемы со всеми операторами PL / SQL в Oracle 9i, но если я попробую выражение basi c, например «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: lin e 1, столбец 7: PLS-00103: обнаружен символ ", но если я возьму код и сохраню его в переменной непосредственно в файле PHP, он будет выполнен правильно.

проблема должна заключаться в некоторой проблеме кодировки символов, когда я вставляю или запрашиваю базу данных MYSQL, чтобы получить код pl / sql, который я намерен выполнить в базе данных Oracle.

Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2020

согласно документу на https://www.php.net/manual/en/function.oci-parse.php

Вы не включаете финал; это неявное

например, их пример

$ stid = oci_parse ($ conn, 'SELECT * FROM employee');

Попробуйте отбросить финал;

...