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
|
#!/usr/bin/perl
# This is a regression test for bug #15186:
# http://rt.cpan.org/Public/Bug/Display.html?id=15186
# About re-using statements with prepare_cached().
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
use t::lib::Test;
use Test::More tests => 13;
use Test::NoWarnings;
# Create a database
my $dbh = connect_ok( RaiseError => 1 );
# Create the table
ok( $dbh->do(<<'END_SQL'), 'CREATE TABLE' );
CREATE TABLE one (
id INTEGER NOT NULL,
name CHAR (64) NOT NULL
)
END_SQL
# Fill the table
ok(
$dbh->do('INSERT INTO one values ( 1, ? )', {}, 'A'),
'INSERT 1',
);
ok(
$dbh->do('INSERT INTO one values ( 2987, ? )', {}, 'Not used'),
'INSERT 1',
);
ok(
$dbh->do('INSERT INTO one values ( 2, ? )', {}, 'Gary Shea'),
'INSERT 1',
);
# Check that prepare_cached works
my $sql = "SELECT name FROM one WHERE id = ?";
SCOPE: {
my $sth = $dbh->prepare_cached($sql);
isa_ok( $sth, 'DBI::st' );
is(
($dbh->selectrow_array($sth, undef, 1))[0],
'A',
'Query 1 Row 1',
);
}
SCOPE: {
my $sth = $dbh->prepare_cached($sql);
isa_ok( $sth, 'DBI::st' );
is(
($dbh->selectrow_array($sth, undef, 1))[0],
'A',
'Query 2 Row 1',
);
is(
($dbh->selectrow_array($sth, undef, 2))[0],
'Gary Shea',
'Query 2 Row 2',
);
}
SCOPE: {
my $sth = $dbh->prepare_cached($sql);
isa_ok( $sth, 'DBI::st' );
is(
($dbh->selectrow_array($sth, undef, 2))[0],
'Gary Shea',
'Query 2 Row 2',
);
}
|