oci_fetch_ *返回的行数少于Oracle SQL Developer

时间:2017-10-12 11:42:43

标签: php oracle oci

我在Oracle SQL Developer和PHP / OCI / Instaclient中运行一个非常简单的查询,并且我获得了不同数量的行!

select * from T_MYTABLE where FOO = 'BAR';

代码:

$connectionString = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521)))(CONNECT_DATA=(SID=MYSID)))";
$conn = oci_connect($username, $passwort, $connectionString);
$ps1 = oci_parse($conn, "ALTER SESSION SET NLS_LANGUAGE = GERMAN_GERMANY.UTF8;");
oci_execute($ps1);

$sql = "select * from T_MYTABLE where FOO = 'BAR'";
$ps2 = oci_parse($conn, $sql);
$r = oci_execute($ps2);

while ($row = oci_fetch_array($ps2, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print_r($row);
    echo "\n";
}

这是我的SQL Developer结果的ID列,旁边是PHP接收这些行的顺序:

ID
663257   1
773255   9
778802   8
778799   7
773250   6
806716   5
808275   4
806721   3
808280   2
826381   NOT INCLUDED
826383   NOT INCLUDED

曾经有一个" ORDER BY ID"在查询中,但我把它遗漏了,因为我觉得这种行为可能暗示了Oracle的内部工作原理。好像,当从OCI方面接近数据库时,它并不知道这两条最后(最新)的线路。

我真的不知道这里发生了什么。我已经习惯了MySQL,同样的查询会给你相同的结果......

是的,我在两种情况下都运行完全相同的查询。

是的,我正在访问同一个数据库。

1 个答案:

答案 0 :(得分:0)

对不起,我是个白痴!

GoranStefanović给了我正确的提示,我仍然连接到我们的“旧”(即在虚拟化之前)Oracle服务器。

如果您遇到本主题中提到的问题:请关闭任何未处理的ORACLE实例