http://www.perlmonks.org?node_id=744841


in reply to Re^6: Can DBI modify queries on the fly?
in thread Can DBI modify queries on the fly?

Notice the call to ->connect in the callback, overriding Sybase's? The callback mechanism provides a means of (conditional) overriding.

$sybase_drh->{Callbacks} = { selectrow_array => sub { # Protect against recursion when calling overriden method. return if $in_callback; local $in_callback = 1; my ($drh, $sql, $attrs, @bind_values) = @_; # Do something to $sql, $attrs and/or @bind_values here... # Tell DBI not to call original connect method undef $_; return $drh->selectrow_array($sql, $attrs, @bind_values); }, };

Note that it would probably make more sense to override prepare and/or execute than convenience methods such as selectrow_array.

Update: Added code.

Replies are listed 'Best First'.
Re^8: Can DBI modify queries on the fly?
by kyle (Abbot) on Feb 18, 2009 at 18:53 UTC

    Thank you!! I remember reading about the conditional override that you're using, but I somehow forgot it when I sat down to try to meet my goal. That works beautifully and saves me the trouble of trying to subclass a DBD. Thanks!