Bonjour,
J'utilise DB2 avec ZF , pour le développement d'une application de monitoring, et au boulot on me pose toujours la même question.
En regardant la méthode Limit() de Zend/Db/Adapter/Db2.php, elle souffre d'une légère erreur, en effet dans le code suivant
on ne note pas de ORDER BY dans le OVER(), or si cela n'est pas fais on ne peut assurer que le select ressortira toujours les données dans le même ordre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /** * DB2 does not implement the LIMIT clause as some RDBMS do. * We have to simulate it with subqueries and ROWNUM. * Unfortunately because we use the column wildcard "*", * this puts an extra column into the query result set. */ $limit_sql = "SELECT z2.* FROM ( SELECT ROW_NUMBER() OVER() AS \"ZEND_DB_ROWNUM\", z1.* FROM ( " . $sql . " ) z1 ) z2 WHERE z2.zend_db_rownum BETWEEN " . ($offset+1) . " AND " . ($offset+$count); return $limit_sql;
cfr: la doc de chez IBM
Il manque donc un paramètre(ou deux) dans la méthode.Envoyé par IBM
Comment le signaler?, si ce n'est déjà fais
Partager