oci_fetch_* returns 行数少于 Oracle SQL 开发人员
oci_fetch_* returns less rows than Oracle SQL Developer
我在 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 开发人员结果的 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,同样的查询会给你同样的结果...
是的,我在这两种情况下 运行 完全相同的查询。
是的,我正在访问同一个数据库。
对不起,我是白痴!
Goran Stefanović 给了我正确的提示,我仍在连接到我们的 "old"(即在虚拟化之前)Oracle 服务器。
如果您遇到本主题中提到的问题:请关闭任何不需要的 ORACLE 实例
我在 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 开发人员结果的 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,同样的查询会给你同样的结果...
是的,我在这两种情况下 运行 完全相同的查询。
是的,我正在访问同一个数据库。
对不起,我是白痴!
Goran Stefanović 给了我正确的提示,我仍在连接到我们的 "old"(即在虚拟化之前)Oracle 服务器。
如果您遇到本主题中提到的问题:请关闭任何不需要的 ORACLE 实例