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 — Враќа низа, индексирана и по име на колона и по позиција, што претставува ред во множеството резултати
= NULL
Враќа низа, индексирана по име на колона и позиција, што претставува ред во множеството резултати. Имајте предвид дека редот вратен од db2_fetch_both() бара повеќе меморија отколку едноиндексираните низи вратени од db2_fetch_assoc() or db2_fetch_array().
Параметри
stmt-
Валиден
stmtресурс што содржи множество резултати. row_number- Бара одреден ред со индекс 1 од множеството резултати. Поминувањето на овој параметар резултира со PHP предупредување ако множеството резултати користи курсор само напред.
Вратени вредности
Враќа асоцијативна низа со вредности на колони индексирани и по име на колона и по 0-индексиран број на колона. Низата претставува следниот или бараниот ред во множеството резултати. Враќа false Враќа 0-индексирана низа со вредности на колони индексирани по позицијата на колоната што претставува следниот или бараниот ред во сетот на резултати. Враќа
row_number ако нема повеќе редови во сетот на резултати, или ако бараниот ред од
Примери
не постои во сетот на резултати.
Пример #1 Итерирање низ курсор само напред db2_fetch_both() без специфичен број на ред, автоматски го зема следниот ред во множеството резултати. Следниот пример пристапува до колоните во вратената низа и по име на колона и по нумерички индекс.
<?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() - Враќа една колона од ред во сет на резултати