使用带分页的 PHP oci8 从多个 Oracle 数据库中获取数据作为单个结果集

Fetching data from multiple Oracle databases as a single resultset using PHP oci8 with pagination

  1. 我有 5 个不同的 Oracle 数据库,即 FDB1617、FDB1516、FDB1415、 FDB1413 和 FDB1312。
  2. 他们的数据库结构都是一样的。
  3. 我想在一次查询中从所有数据库中获取数据 使用 PHP 和带分页的 OCI8。

例如:

SELECT ID,ContactName, Phone FROM FDB1617

应该从所有 5 个数据库中获取数据;

分页可以使用以下代码

    public function execFetchPage($sql, $action, $firstrow = 1, $numrows = 1, $bindvars = array()) {
        $query = 'SELECT * FROM (SELECT a.*, ROWNUM AS rnum FROM (' . $sql . ') a WHERE ROWNUM <= :sq_last) WHERE :sq_first <= RNUM';
        array_push($bindvars, array(':sq_first', $firstrow, -1));
        array_push($bindvars, array(':sq_last', $firstrow + $numrows - 1, -1));
        $res = $this->execFetchAll($query, $action, $bindvars);
        return($res);
    }

请帮助并提前致谢

您可以使用 database linksUNION 发出多个查询,同时返回单个结果集。

CREATE DATABASE LINK link_name CONNECT TO username IDENTIFIED BY password USING connection_string;
...

然后:

SELECT ID, ContactName, Phone FROM table_name
UNION
SELECT ID, ContactName, Phone FROM table_name@link_name
UNION
...