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

时间:2017-01-06 13:52:32

标签: php oracle oci8

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

    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);
        }
    

    请提前帮助和谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用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
...