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__

Reply via email to