Welcome, Guest. Register Now!
   
Mark Forums Read Mark Forums Read Mark Forums Read


Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 03-25-2008, 11:19 AM
Junior Member
 
Join Date: Mar 2008
Posts: 5
Smile Zend_Db_Select Db2 trouble OFFSET

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][DB2SQL0199N 
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
  
=> 
    array
      
'EI' => string '10' (length=2)
      
'EINAIM' => string 'Test                ' (length=20)
  
=> 
    array
      
'EI' => string '13' (length=2)
      
'EINAIM' => string 'ивгЪШ               ' (length=20)
  
=> 
    array
      
'EI' => string '20' (length=2)
      
'EINAIM' => string 'T                   ' (length=20)
  
=> 
    array
      
'EI' => string '23' (length=2)
      
'EINAIM' => string 'ЪШЫЮУаРЬЬ           ' (length=20)
  
=> 
    array
      
'EI' => string '26' (length=2)
      
'EINAIM' => string 'іP.                 ' (length=20)
  
=> 
    array
      
'EI' => string '30' (length=2)
      
'EINAIM' => string 'KM                  ' (length=20)
  
=> 
    array
      
'EI' => string '33' (length=2)
      
'EINAIM' => string 'M                   ' (length=20)
  
=> 
    array
      
'EI' => string '36' (length=2)
      
'EINAIM' => string 'MM                  ' (length=20)
  
=> 
    array
      
'EI' => string '40' (length=2)
      
'EINAIM' => string 'TЛC.KB.M.           ' (length=20)
  
=> 
    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
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 03-29-2008, 05:08 AM
Junior Member
 
Join Date: Mar 2008
Posts: 5
Default

Quote:
Originally Posted by michael063 View Post
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][DB2SQL0199N 
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
  
=> 
    array
      
'EI' => string '10' (length=2)
      
'EINAIM' => string 'Test                ' (length=20)
  
=> 
    array
      
'EI' => string '13' (length=2)
      
'EINAIM' => string 'ивгЪШ               ' (length=20)
  
=> 
    array
      
'EI' => string '20' (length=2)
      
'EINAIM' => string 'T                   ' (length=20)
  
=> 
    array
      
'EI' => string '23' (length=2)
      
'EINAIM' => string 'ЪШЫЮУаРЬЬ           ' (length=20)
  
=> 
    array
      
'EI' => string '26' (length=2)
      
'EINAIM' => string 'іP.                 ' (length=20)
  
=> 
    array
      
'EI' => string '30' (length=2)
      
'EINAIM' => string 'KM                  ' (length=20)
  
=> 
    array
      
'EI' => string '33' (length=2)
      
'EINAIM' => string 'M                   ' (length=20)
  
=> 
    array
      
'EI' => string '36' (length=2)
      
'EINAIM' => string 'MM                  ' (length=20)
  
=> 
    array
      
'EI' => string '40' (length=2)
      
'EINAIM' => string 'TЛC.KB.M.           ' (length=20)
  
=> 
    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


Finally, my problem is Fix in Zend 1.5.1 version!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 10:18 PM.