Jak mówi masto, symbole zastępcze w SQL nie są bezpośrednio zastępowane parametrami. Cały sparametryzowany SQL to SQL z symbolami zastępczymi przekazywanymi do silnika bazy danych w celu jednorazowego analizowania, a następnie otrzymuje parametry.
Jako że idssl zauważa, że możesz odzyskać SQL z instrukcji lub uchwytu połączenia, możesz również pobrać parametry od ParamValues. Jeśli nie chcesz tego zrobić samodzielnie, możesz użyć czegoś takiego, jak DBIx::Log4perl, aby zalogować się tylko z SQL i parametrami. Zobacz DBIX_L4P_LOG_DELAYBINDPARAM który wyprowadza coś takiego:
DEBUG - prepare(0.1): 'insert into mje values(?,?)'
DEBUG - $execute(0.1) = [{':p1' => 1,':p2' => 'fred'},undef];
Oczywiście, ponieważ korzysta Log :: Log4perl można pominąć „DEBUG -” jeśli chcesz. Istnieje mały samouczek dotyczący korzystania z DBIx :: Log4perl here.
Powinieneś być w stanie wykorzystać DBIx :: Log4perl z dowolnym DBD a jeśli nie może z jakiegoś powodu RT go i będę na to patrzeć.
Jeśli nie chcesz korzystać z DBIx :: Log4perl, a opcje śledzenia DBI nie odpowiadają Twoim potrzebom, możesz pisać callbacki dla metod przygotowania/wyboru */execur DBI i zbierać to, co lubisz w nich.
możliwy duplikat [Jak mogę utworzyć dziennik DBI dla wszystkich zapytań łącznie z parametrami?] (Http://stackoverflow.com/questions/19703521/how-can-i-make-dbi-log-all-queries-including params) – Jake
@Jeśli to pytanie zostało zadane 4 lata przed innym pytaniem, również to pytanie ma lepsze odpowiedzi (według mnie). Właśnie dlatego zaznaczyłem drugie pytanie jako duplikat i kandydat do zamknięcia. – aidan