Come dice masto in generale, i segnaposto in SQL non vengono sostituiti direttamente con i parametri. L'intero punto di SQL parametrizzato è l'SQL con i segnaposto viene passato al motore di database per analizzare una volta e quindi riceve solo i parametri.
Come note di idssl è possibile ottenere il codice SQL dall'istruzione o dall'handle di connessione ed è inoltre possibile recuperare i parametri da ParamValues. Se non vuoi farlo da solo, puoi usare qualcosa come DBIx::Log4perl per registrare solo SQL e parametri. Vedere DBIX_L4P_LOG_DELAYBINDPARAM che emette qualcosa di simile:
DEBUG - prepare(0.1): 'insert into mje values(?,?)'
DEBUG - $execute(0.1) = [{':p1' => 1,':p2' => 'fred'},undef];
Naturalmente in quanto utilizza Log :: log4perl è possibile omettere il "DEBUG -" se si vuole. C'è un piccolo tutorial per l'uso di DBIx :: Log4perl here.
Si dovrebbe essere in grado di utilizzare DBIx :: log4perl con qualsiasi DBD e se non è possibile per qualche motivo RT e mi guarderà a questo.
Se non si desidera utilizzare DBIx :: Log4perl e le opzioni di traccia DBI non soddisfano le proprie esigenze, è possibile scrivere callback per i metodi DBA di preparazione/selezione */esecuzione e raccogliere tutto ciò che si desidera.
possibile duplicato di [Come posso fare a DBI registrare tutte le query compresi i parametri?] (Http://stackoverflow.com/questions/19703521/how-can-i-make-dbi-log-all-queries-including- params) – Jake
@Jake questa domanda è stata posta 4 anni prima dell'altra domanda, anche questa domanda ha risposte migliori, (secondo me). Ecco perché ho segnato l'altra domanda come duplicato e candidato alla chiusura. – aidan