package WebGUI::Macro::SQLExt; use strict; use WebGUI::Macro; use WebGUI::Session; use WebGUI::DatabaseLink; use WebGUI::SQL; $WebGUI::Macro::SQLExt::VERSION = '00.01.00'; #------------------------------------------------------------------- # Syntax: # ^SQLExt($statement,$format,$databaseLinkID); sub process { my ($output, @data, $rownum, $temp,$dbh); my ($session,$statement, $format,$dblh); ($session,$statement,$format,$dblh)=($_[0],$_[1],$_[2],$_[3]); $format = '^0;' if ($format eq ""); if ( $statement =~ /^\s*select/i || $statement =~ /^\s*show/i || $statement =~ /^\s*describe/i ) { my $dblink=WebGUI::DatabaseLink->new($session,$dblh); $dbh=$dblink->db; my $sth = $dbh->unconditionalRead($statement); unless ($sth->errorCode < 1) { return '
SQLExt Macro Failed: '.$sth->errorMessage.'
'; } else { while (@data = $sth->array) { $temp = $format; $temp =~ s/\^(\d+)\;/$data[$1]/g; $rownum++; $temp =~ s/\^rownum\;/$rownum/g; $output .= $temp; } $sth->finish; return $output; } } elsif ( $statement =~ /^\s*insert/i || $statement =~ /^\s*update/i || $statement =~ /^\s*delete/i ) { my $dblink=WebGUI::DatabaseLink->new($session,$dblh); $dbh=$dblink->db; my $sth = $dbh->unconditionalRead($statement); unless ($sth->errorCode < 1) { return '
SQLExt Macro Failed: '.$sth->errorMessage.'
'; } return ''; } else { return "Cannot execute this type of query."; } } 1;