Как я могу распечатать SQL-запрос, выполняемый после того, как DBI Perl заполнит заполнителей?

Форкджоин ждет, когда все будет завершено. Проверьте свой баннер Observables или uploadService, если он работает правильно, он завершен.

17
задан Ωmega 20 October 2019 в 14:44
поделиться

3 ответа

См. Трассировка в DBI . Следующее работает с использованием DBD :: SQLite , но дает много вывода:

$dbh->trace($dbh->parse_trace_flags('SQL|1|test'));

Вывод:

<- prepare ('SELECT ... FROM ... WHERE ... =?') = DBI :: st = HASH (0x21ee924) в строке 213 booklet-excel.pl

<- execute ('Inhaler') = '0E0' в строке 215 booklet-excel.pl

и т. Д.

Вы можете подключить свой собственный фильтр к потоку трассировки , чтобы оставить только prepare s.

16
ответ дан 30 November 2019 в 11:32
поделиться

Для большинства запросов самая простая отладка должна использовать следующее...

  • , Если Вы готовите и выполняете отдельного оператора с помощью do метод, используйте:

    use feature 'say';
    say $dbh->{Statement};
    
  • , Если Вы используете prepare и execute методы отдельно, используйте:

    use feature 'say';
    use Data::Dumper;
    say $sth->{Statement};
    say Dumper($sth->{ParamValues});
    
0
ответ дан 30 November 2019 в 11:32
поделиться

Не в общем, потому что DBI не обязательно производит такой запрос. Если ваша база данных поддерживает подготовленные операторы и заполнители в своем API, DBI передаст их и позволит базе данных выполнять работу, что является одной из причин использования подготовленных операторов.

10
ответ дан 30 November 2019 в 11:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: