Hello,
Some weeks ago I faced difficulties with walk a big number of
records from a result set.
I was using the function db2_fetch_both in a method of a database adapter
class to retrieve just one record at a time. The total number of records
were: 5647 and when I reach record number 1600 the function crashed
generating the below message in "Actual result" field.
I am copying table's description next:
TMP_TABLE
-----------------------------------------------------------------
| ID | TYPE | SIZE | NULL |
-----------------------------------------------------------------
| ID | INTEGER | 4 | NO |
| SERVICE | VARCHAR | 30 | NO |
| ID_v | VARCHAR | 30 | NO |
| INFORMATION | CLOB | 65536 | YES |
| EXP_LEVEL | INTEGER | 4 | NO |
| IP4B | BIGINT | 8 | NO |
| MODIFIED | INTEGER | 4 | YES |
| DETAIL | VARCHAR | 200 | YES |
| FALSPOS | INTEGER | 4 | YES |
-----------------------------------------------------------------
When it crashed I received this message from db2_fetch_both
db2_fetch_array() [function.db2-fetch-array]: Fetch Failure
After reported this message to IBM OpenDev I was helped by a OpenDev IBMer who noticed me
that it wasn't a ibm_db2 module problem, in fact it was a database configuration
issue. The OpenDev IBMer looked into my DB2 Client CLI TRACE files and found out what was happen.
So I had to modify APP_CTL_HEAP_SZ and everything seems to works fine now.
--
Esteban Acosta Villafañe
Area I+D
http://www.openware.biz/opendev
Linkein Profile: http://www.linkedin.com/in/estebanavdb2_fetch_both
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
db2_fetch_both
Референца за `function.db2-fetch-both.php` со подобрена типографија и навигација.
db2_fetch_both
(PECL ibm_db2 >= 1.0.0)
db2_fetch_both — Returns an array, indexed by both column name and position, representing a row in a result set
= NULL
Returns an array, indexed by both column name and position, representing a row in a result set. Note that the row returned by db2_fetch_both() requires more memory than the single-indexed arrays returned by db2_fetch_assoc() or db2_fetch_array().
Параметри
stmt-
Валиден
stmtресурс што содржи множество резултати. row_number- Бара одреден ред со индекс 1 од множеството резултати. Поминувањето на овој параметар резултира со PHP предупредување ако множеството резултати користи курсор само напред.
Вратени вредности
Returns an associative array with column values indexed by both the column name and 0-indexed column number. The array represents the next or requested row in the result set. Returns false Враќа 0-индексирана низа со вредности на колони индексирани по позицијата на колоната што претставува следниот или бараниот ред во сетот на резултати. Враќа
row_number ако нема повеќе редови во сетот на резултати, или ако бараниот ред од
Примери
не постои во сетот на резултати.
Пример #1 Итерирање низ курсор само напред db2_fetch_both() without a specific row number, it automatically retrieves the next row in the result set. The following example accesses columns in the returned array by both column name and by numeric index.
<?php
$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);
while ($row = db2_fetch_both($stmt)) {
printf ("%-5d %-16s %-32s %10s\n",
$row['ID'], $row[0], $row['BREED'], $row[3]);
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
0 Pook cat 3.20 5 Rickety Ride goat 9.70 2 Smarty horse 350.00
без специфичен број на ред, автоматски го добива следниот ред во сетот на резултати. db2_fetch_both() Пример #2 Добивање специфични редови со
од скролабилен курсор db2_fetch_both() Ако вашиот сет на резултати користи скролабилен курсор, можете да го повикате
<?php
$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));
$i=2;
while ($row = db2_fetch_both($result, $i)) {
printf ("%-5d %-16s %-32s %10s\n",
$row[0], $row['NAME'], $row[2], $row['WEIGHT']);
$i = $i + 2;
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
0 Pook cat 3.20 5 Rickety Ride goat 9.70 2 Smarty horse 350.00
Види Исто така
- db2_fetch_array() - Враќа низа, индексирана по позиција на колона, што претставува ред во сет на резултати
- db2_fetch_assoc() - Враќа низа, индексирана по име на колона, што претставува ред во сет на резултати
- db2_fetch_object() - Враќа објект со својства што претставуваат колони во добиениот ред
- db2_fetch_row() - Поставува покажувач на сет на резултати на следниот ред или бараниот ред
- db2_result() - Враќа една колона од ред во сет на резултати