Hi, All!
I'm have trouble with executing SQL-query in DB2 database (use Adapter DB2)
Using Zend_Db_Select in my Model ou17
PHP Code:
class Ou17Model
{
public function rez_ou17($db, $ispolnitel, $begin_date, $till_date)
{
$select = $db->select()
->from (array('t'=>'ta07'),
array('ei'=>'ta07_ei',
'einaim'=>'ta07_einaim'), 'exp')
->limit(10,5);
var_dump($db->prepare($select)); die();
//var_dump($db->prepare((string)$select));
}
.....
Result of var_dump():
PHP Code:
Zend_Db_Statement_Db2_Exception: [IBM][CLI Driver][DB2] SQL0199N
The use of the reserved word "SELECT" following "" is not valid.
Expected tokens may include: "FOR WITH FETCH ORDER UNION EXCEPT QUERYNO OPTIMIZE ". SQLSTATE=42601
in /usr/share/pear/ZendFramework-1.5.0/library/Zend/Db/Statement/Db2.php on line 208
Result of Profiler SQL-query:
(For usability, i'm enable Profiler)
PHP Code:
protected '_query' => string 'SELECT t.ta07_ei AS ei, t.ta07_einaim AS einaim FROM exp.ta07 AS t SELECT z2.*
FROM (
SELECT ROW_NUMBER() OVER() AS "ZEND_DB_ROWNUM", z1.*
FROM (
) z1
) z2
WHERE z2.zend_db_rownum BETWEEN 6 AND 15' (length=301)
P.S. if use only LIMIT (default OFFSET = 0), work!
PHP Code:
$select = $db->select()
->from (array('t'=>'ta07'),
array('ei'=>'ta07_ei',
'einaim'=>'ta07_einaim'), 'exp')
->limit(10);
PHP Code:
Result (fetch first 10 rows)
array
0 =>
array
'EI' => string '10' (length=2)
'EINAIM' => string 'Test ' (length=20)
1 =>
array
'EI' => string '13' (length=2)
'EINAIM' => string 'ивгЪШ ' (length=20)
2 =>
array
'EI' => string '20' (length=2)
'EINAIM' => string 'T ' (length=20)
3 =>
array
'EI' => string '23' (length=2)
'EINAIM' => string 'ЪШЫЮУаРЬЬ ' (length=20)
4 =>
array
'EI' => string '26' (length=2)
'EINAIM' => string 'іP. ' (length=20)
5 =>
array
'EI' => string '30' (length=2)
'EINAIM' => string 'KM ' (length=20)
6 =>
array
'EI' => string '33' (length=2)
'EINAIM' => string 'M ' (length=20)
7 =>
array
'EI' => string '36' (length=2)
'EINAIM' => string 'MM ' (length=20)
8 =>
array
'EI' => string '40' (length=2)
'EINAIM' => string 'TЛC.KB.M. ' (length=20)
9 =>
array
'EI' => string '43' (length=2)
'EINAIM' => string 'KB.M. ' (length=20)
Prepared SQL -
PHP Code:
protected '_query' => string 'SELECT t.ta07_ei AS ei, t.ta07_einaim AS einaim
FROM exp.ta07 AS t FETCH FIRST 10 ROWS ONLY' (length=91)
Any Ideas?
Thanks, sorry of my bad english