我在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,同样的查询会给你相同的结果......
是的,我在两种情况下都运行完全相同的查询。
是的,我正在访问同一个数据库。
答案 0 :(得分:0)
对不起,我是个白痴!
GoranStefanović给了我正确的提示,我仍然连接到我们的“旧”(即在虚拟化之前)Oracle服务器。
如果您遇到本主题中提到的问题:请关闭任何未处理的ORACLE实例