, . SQL . . - , . , SQL, . logger , ; .
, . :
sub make_query {
my ($table, $columns, $conditions) = @_;
return "SELECT $columns FROM $table WHERE $conditions";
}
sub run_query {
my ($query) = @_;
$dbh->prepare($query);
...
}
run_query( make_query( 'foo', '*', '1=1' ) );
, . ,
- :
sub make_query {
my ($table, $columns, $conditions) = @_;
return +{
query => "SELECT $columns FROM $table WHERE $conditions",
table => $table,
}
}
sub run_query {
my ($query) = @_;
$dbh->prepare($query->{query});
log_to_file( $query->{table}.'.log', ... );
...
}
run_query( make_query( 'foo', '*', '1=1' ) );
API , ,
.
SQL::Abstract SQL.
.
: , , SQLite. EXPLAIN
:
sqlite> explain select * from test;
0|Trace|0|0|0|explain select * from test;|00|
1|Goto|0|11|0||00|
2|SetNumColumns|0|2|0||00|
3|OpenRead|0|2|0||00|
4|Rewind|0|9|0||00|
5|Column|0|0|1||00|
6|Column|0|1|2||00|
7|ResultRow|1|2|0||00|
8|Next|0|5|0||00|
9|Close|0|0|0||00|
10|Halt|0|0|0||00|
11|Transaction|0|0|0||00|
12|VerifyCookie|0|1|0||00|
13|TableLock|0|2|0|test|00|
14|Goto|0|2|0||00|
, TableLock - , . YMMV,
.