The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -I./t
$| = 1;
print "1..$tests\n";

use DBI qw(:sql_types);
use ODBCTEST;

print "ok 1\n";

print " Test 2: connecting to the database\n";
my $dbh = DBI->connect() || die "Connect failed: $DBI::errstr\n";

print "ok 2\n";


#### testing a simple select"

print " Test 3: create test table\n";
$rc = ODBCTEST::tab_create($dbh);
print "not " unless($rc);
print "ok 3\n";

print " Test 4: insert test data\n";
my @data = (
	[ 1, 'foo', 'foo varchar' ],
	[ 2, 'bar', 'bar varchar' ],
	[ 3, 'bletch', 'bletch varchar' ],
);
$rc = tab_insert($dbh, \@data);
unless ($rc) {
	warn "Test 4 is known to fail often. It is not a major concern.\n";
	print "not "
}
print "ok 4\n";

print " Test 5: select test data\n";
$rc = tab_select($dbh, \@data);
print "not " unless($rc);
print "ok 5\n";

$rc = ODBCTEST::tab_delete($dbh);

BEGIN {$tests = 5;}
exit(0);

sub tab_select {
	my $dbh = shift;
    my $dref = shift;
    my @data = @{$dref};
    my @row;

    my $sth = $dbh->prepare("SELECT A,B,C,D FROM $ODBCTEST::table_name WHERE a = ?")
		or return undef;
	my @bind_vals = (1, 3);
	my $bind_val;
	foreach $bind_val (@bind_vals) {
		$sth->bind_param(1, $bind_val, SQL_INTEGER);
		$sth->execute;
		while (@row = $sth->fetchrow()) {
			print "$row[0]|$row[1]|$row[2]|\n";
			if ($row[0] != $bind_val) {
				print "Bind value failed! bind value = $bind_val, returned value = $row[0]\n";
				return undef;
			}
		}
    }
	return 1;
}

sub tab_insert {
    my $dbh = shift;
    my $dref = shift;
    my @data = @{$dref};

    my $sth = $dbh->prepare(<<"/");
INSERT INTO $ODBCTEST::table_name (a, b, c)
VALUES (?, ?, ?)
/
    unless ($sth) {
	warn $DBI::errstr;
	return 0;
    }
	$sth->{PrintError} = 1;
    foreach (@data) {
		$sth->bind_param(1, $_->[0], SQL_INTEGER);	## JLU need to test here for different driver types
		$sth->bind_param(2, $_->[1], SQL_VARCHAR);
		$sth->bind_param(3, $_->[2], SQL_VARCHAR);
		return 0 unless $sth->execute;
	}
   1;
}

__END__