DBI.pmAPI - часть 10
# Это делается только один раз. Во всех следующих строках будут те же поля,
my @row1 = values %row1;
DBI::finish
$result = $statement_handle->finish;
DBI:: finish освобождает все данные в описателе команды, чтобы можно было уничтожить описатель или снова подготовить его. Некоторым серверам баз данных это необходимо для освобождения соответствующих ресурсов. DBD::mSQL и DBD::mysql не нуждаются в этой функции, но для переносимости кода следует использовать ее по окончании работы с описателем команды. Функция возвращает неопределенное значение undef, если описатель не удается освободить.
Пример
use DBI;
my $db = DBI->connect('DBI:mysql:mydata','me','mypassword');
my $query = "SELECT * FROM mytable";
my $mytable_output = $db->prepare($query);
$mytable_output->execute;
$mytable_output->finish;
# Теперь можно переназначить $mytable_output или подготовить для него
# другую команду SQL.
DBI::func
$handlc->func(@func_argumcnts, $func_name);
@dbs = $db->func("$hostname", '_ListDBs');
@dbs = $db->func("$hostname:Sport", '_ListDBs');
@tables = $db->func('_ListTables');
$result = $drh->func( $database, '_CreateDB' );
Sresult = $drh->func( Sdatabase, '_DropDB' );
DBI::func вызывает специализированные непереносимые функции, включенные в различные драйверы DBD. Она используется с описателем базы данных или описателем команды, в зависимости от назначения специализированной функции. По возможности следует использовать равносильную переносимую функцию. При использовании специализированной функции сначала передаются ее аргументы как скаляр, а затем - имя функции. DBD::mSQL и DBD::mysql реализуют следующие функции:
_ListDBs
Функция _ListDBs принимает имя узла и необязательный номер порта и возвращает список имеющихся у сервера баз данных. Лучше использовать переносимую функцию DBJ::data_sources .
_ListTables
Функция _ListTables возвращает список таблиц, имеющихся в текущей базе данных.