################ package SQLtest; ################ use strict; use warnings; #use lib qw( ../lib ); use SQL::Statement; printf "SQL::Statement v.%s\n", $SQL::Statement::VERSION; our ( @ISA, @EXPORT, $DEBUG, $parser, $stmt, $cache ); $cache = {}; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(&new_parser &parse &do_ &execute &fetchStr $parser $stmt); sub new_parser { $parser = (@_) ? SQL::Parser->new(@_) : SQL::Parser->new(); } sub parse { my ($sql) = @_; eval { $stmt = SQL::Statement->new( $sql, $parser ) }; warn $@ if $@ and $DEBUG; return ($@) ? 0 : 1; } sub do_ { my ( $sql, @params ) = @_; @params = () unless @params; $stmt = SQL::Statement->new( $sql, $parser ); eval { $stmt->execute( $cache, @params ) }; return ($@) ? 0 : 1; } sub execute { my @params = @_; @params = () unless @params; eval { $stmt->execute( $cache, @params ) }; return ($@) ? 0 : 1; } sub fetchStr { my ( $sql, @params ) = @_; do_( $sql, @params ); my $str = ''; while ( my $r = $stmt->fetch ) { @$r = map { defined $_ ? $_ : '' } @$r; $str .= sprintf "%s^", join '~', @$r; } $str =~ s/\^$//; return $str; } 1;