Я написал скрипт, который делает несколько очень простых вещей:
1) Подключается к базе данных Oracle 10.2) Проверяет, существует ли таблица tmp.3) Если существует, создает таблицу tmp (копия существующей таблицы)4) Я делаю некоторые манипуляции с данными в таблице tmp (чтобы смоделировать, что произойдет в производстве)5) Выполнен запрос, чтобы получить разницу между двумя таблицами, и именно здесь я сталкиваюсь с проблемами.Проблемный блок кода находится ниже с конкретной функцией, имеющей звездочки до и после нее.
printf(" Finding difference between current and previous data .......");
$sCmd = sprintf("SELECT * FROM hrms_mview_previous WHERE cstatus='A' MINUS SELECT * FROM hrms_mview_current");
if (!($hDB_Results = oci_parse($hDB, $sCmd)))
{
fprintf(STDERR, "ERROR\n Error in MINUS query.\n\n");
exit(1);
}
else
{
**oci_execute($hDB_Results);**
$iRows = oci_fetch_all($hDB_Results, $aRes);
print_r($aRes);
printf("done\n");
}
oci_free_statement($hDB_Results);
Если я удаляю вызов oci_execute (), код выполняет штраф и возвращается пустой массив.Если я выполняю тот же запрос, который передается oci_execute () в Oracle CLI, запрос работает нормально и возвращает ожидаемые данные.
Это вывод сценария:
Segmentation fault (core dumped)
Я использую версию PHP 5.2.13 на машине Solaris.Кто-нибудь испытывал подобное поведение с вызовами oci_execute () раньше?Я немного растерялся.