Date: Thu, 09 Aug 2001 09:08:52 +0400
From: Eugeny Goltsov <Eugeny.Goltsov@p17.f550.n5004.z2.fidonet.org>
Newsgroups: fido7.ru.cgi.perl
Subject: Почему нужно вызывать $sth->finish() после завершения любой операции
EG>> Вообще-то $sth->finish(); должно делается после завершения любой
EG>> операции с $sth (например prepare и т.д.). В таком случае можно
IS> Откуда информация? В perldoc DBI сказано что явный вызов finish
IS> используется крайне редко -- только в специальных случаях:
Это также тривиально как закрывать правую скобку ")" после левой "("
Тем не менее следует почитать не perldoc, а документацию на mySQL.
Там про это написано.
IS> Если finish связан лишь с fetch, то непонятно на кой лад его
IS> делать после prepare?
Приведу пример:
$sth=$dbh->prepare('select * from name_db');
$sth->execute;
$numrow=$sth->rows;
@row=$sth->fetch_array;
...
любые операции с $sth
...
$sth->finish;
Hа самом деле можно не финишировать сессию, но после остается определенной
величиной (defined) $sth, а представь, что создаю новый процесс, он у меня
завершается с ошибкой, начинаем работать с $sth, и как думаешь, что в этом
случае будет?
Все пройдет гладко при неопределенной величине $sth, что можно добиться только
при finish.