################ 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;