1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category   Zend
16 * @package    Zend_Db
17 * @subpackage Statement
18 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
19 * @license    http://framework.zend.com/license/new-bsd     New BSD License
20 * @version    $Id: Oci.php 23775 2011-03-01 17:25:24Z ralph $
21 */
22
23/**
24 * @see Zend_Db_Statement_Pdo
25 */
26// require_once 'Zend/Db/Statement/Pdo.php';
27
28/**
29 * Proxy class to wrap a PDOStatement object for IBM Databases.
30 * Matches the interface of PDOStatement.  All methods simply proxy to the
31 * matching method in PDOStatement.  PDOExceptions thrown by PDOStatement
32 * are re-thrown as Zend_Db_Statement_Exception.
33 *
34 * @category   Zend
35 * @package    Zend_Db
36 * @subpackage Statement
37 * @copyright  Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
38 * @license    http://framework.zend.com/license/new-bsd     New BSD License
39 */
40class Zend_Db_Statement_Pdo_Oci extends Zend_Db_Statement_Pdo
41{
42
43    /**
44    * Returns an array containing all of the result set rows.
45    *
46    * Behaves like parent, but if limit()
47    * is used, the final result removes the extra column
48    * 'zend_db_rownum'
49    *
50    * @param int $style OPTIONAL Fetch mode.
51    * @param int $col   OPTIONAL Column number, if fetch mode is by column.
52    * @return array Collection of rows, each in a format by the fetch mode.
53    * @throws Zend_Db_Statement_Exception
54    */
55    public function fetchAll($style = null, $col = null)
56    {
57        $data = parent::fetchAll($style, $col);
58        $results = array();
59        $remove = $this->_adapter->foldCase('zend_db_rownum');
60
61        foreach ($data as $row) {
62            if (is_array($row) && array_key_exists($remove, $row)) {
63                unset($row[$remove]);
64            }
65            $results[] = $row;
66        }
67        return $results;
68    }
69
70
71    /**
72     * Fetches a row from the result set.
73     *
74     * @param int $style  OPTIONAL Fetch mode for this fetch operation.
75     * @param int $cursor OPTIONAL Absolute, relative, or other.
76     * @param int $offset OPTIONAL Number for absolute or relative cursors.
77     * @return mixed Array, object, or scalar depending on fetch mode.
78     * @throws Zend_Db_Statement_Exception
79     */
80    public function fetch($style = null, $cursor = null, $offset = null)
81    {
82        $row = parent::fetch($style, $cursor, $offset);
83
84        $remove = $this->_adapter->foldCase('zend_db_rownum');
85        if (is_array($row) && array_key_exists($remove, $row)) {
86            unset($row[$remove]);
87        }
88
89        return $row;
90    }
91}
92