【发布时间】:2011-02-16 19:11:42
【问题描述】:
我写了一个脚本,做了一些非常简单的事情:
1) 连接到 Oracle 10 数据库。
2) 检查是否存在 tmp 表。
3) 如果 !exist,则创建 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() 的调用,代码将正常执行并返回一个空数组。如果我在 Oracle CLI 中运行传递给 oci_execute() 的相同查询,则查询工作正常并返回我期望的数据。
这是脚本输出:
Segmentation fault (core dumped)
我在 Solaris 机器上使用 PHP 版本 5.2.13。以前有没有人在调用 oci_execute() 时遇到过类似的行为?我对这个有点不知所措。
【问题讨论】: