/usr/share/doc/libdbd-odbc-perl/examples/proctest2.pl is in libdbd-odbc-perl 1.45-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | #!/usr/bin/perl -w
# $Id$
use DBI;
use strict;
use Data::Dumper;
unlink("dbitrace.log") if (-e "dbitrace.log");
DBI->trace(9, "dbitrace.log");
my $dbh = DBI->connect();
$dbh->{LongReadLen} = 8000;
$dbh->{FetchHashKeyName} = 'NAME_uc';
my $dbh2 = DBI->connect();
$dbh2->{LongReadLen} = 8000;
$dbh2->{FetchHashKeyName} = 'NAME_uc';
eval {
local $dbh->{PrintError} = 0;
$dbh->do("drop procedure PERL_DBD_TESTPRC");
};
$dbh->do("CREATE PROCEDURE PERL_DBD_TESTPRC
\@parameter1 int = 22
AS
/* SET NOCOUNT ON */
select 1 as some_data
select isnull(\@parameter1, 0) as parameter1, 3 as some_more_data
-- print 'kaboom'
RETURN(\@parameter1 + 1)");
my $innerTestSth;
sub innerTest($)
{
my ($outputTempate) = @_;
my %outputData;
my $queryInputParameter1 = 2222;
my $queryOutputParameter = $outputTempate;
if(!defined $innerTestSth) {
$innerTestSth = $dbh2->prepare('{? = call PERL_DBD_TESTPRC(?) }');
}
$innerTestSth->bind_param_inout(1, \$queryOutputParameter, 30, { TYPE => DBI::SQL_INTEGER });
$innerTestSth->bind_param(2, $queryInputParameter1, { TYPE => DBI::SQL_INTEGER });
# $sth->trace(1);#, 'DbiTest.txt');
$innerTestSth->execute();
print '$innerTestSth->{Active}: ', $innerTestSth->{Active}, "\n";
do {
my $rowRef;
undef $rowRef;
print "Columns: ", join(', ', @{$innerTestSth->{NAME}}), "\n";
for(;$rowRef = $innerTestSth->fetchrow_hashref(); ) {
print '%$rowRef2 ', Dumper(\%$rowRef), "\n";
}
} while($innerTestSth->{odbc_more_results});
print '$queryOutputParameter: \'', $queryOutputParameter, '\' expected: (', $queryInputParameter1 + 1, ")\n\n";
}
sub test($)
{
my ($outputTempate) = @_;
my $queryInputParameter1 = 2222;
my $queryOutputParameter = $outputTempate;
my $sth = $dbh->prepare('select ID from (select 1 as ID union select 2 as ID union select 3 as ID) tmp order by ID');
$sth->execute();
do {
for(my $rowRef = undef; $rowRef = $sth->fetchrow_hashref('NAME'); ) {
print '%$rowRef ', Dumper(\%$rowRef), "\n";
innerTest($outputTempate);
}
} while($sth->{odbc_more_results});
}
##########################################
### Test
##########################################
test(10);
##########################################
### Cleanup...
##########################################
$dbh2->disconnect;
$dbh->disconnect;
|