View Single Post
  #2 (permalink)  
Old 03-29-2008, 05:08 AM
michael063 michael063 is offline
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!
Reply With Quote