Tim Bunce wrote:
>
> > SELECT version
> > FROM product_component_version
> > WHERE product LIKE 'Oracle%'
> > should be a quite portable way.
>
> I'd be a little nervous of that returning more than one row.
> But lets wait and see if anyone complains :)
How about a test:
#!perl -w
sub ok ($$;$) {
my($n, $ok, $warn) = @_;
++$t;
die "sequence error, expected $n but actually $t"
if $n and $n != $t;
($ok) ? print "ok $t\n"
: print "# failed test $t at line ".(caller)[2]."\nnot ok $t\n";
if (!$ok && $warn) {
$warn = $DBI::errstr || "(DBI::errstr undefined)" if $warn eq '1';
warn "$warn\n";
}
}
use DBI;
$| = 1;
my $dbuser = $ENV{ORACLE_USERID} || 'scott/tiger';
my $dbh = DBI->connect('dbi:Oracle:', $dbuser, '');
unless($dbh) {
warn "Unable to connect to Oracle ($DBI::errstr)\nTests skiped.\n";
print "1..0\n";
exit 0;
}
print "1..$tests\n";
#
my $cnt = $dbh->selectrow_array(<<'SQL', undef, 'Oracle%');
SELECT count(*)
FROM product_component_version
WHERE product LIKE ?
SQL
ok(0, $cnt == 1);
my $server_version = $dbh->func('ora_server_version');
ok(0, $server_version);
ok(0, $server_version->[0] >= 7 && $server_version->[0] <= 9);
#
exit 0;
BEGIN { $tests = 3 }
__END__