On Thu, Oct 21, 2004 at 06:57:20PM +0200, Honza Pazdziora wrote:
> On Thu, Oct 21, 2004 at 06:46:15PM +0200, H.Merijn Brand wrote:
> > On Thu 21 Oct 2004 18:20, Tim Bunce <[EMAIL PROTECTED]> wrote:
> > > Please try this patch over the original.
> > Describe failed during DBI::st=HASH(0x402091a8)->FETCH(NUM_OF_FIELDS): 6553:
> > ORA-06553: PLS-561: character set mismatch on value for parameter 'ARG2'
>
> The same on 5.8.3 on 9.2 Linux client against 8.0.5 Solaris server:
Okay. I've had enough of trying to finesse this one. Here's a patch
that disables that block of tests if the client or the server is <9.0.
Let me know how it goes. Thanks.
Tim.
p.s. I've also removed the bind_col that was triggering the failure.
I'd be curious what happens if you comment out the first skip() call.
Index: t/25plsql.t
===================================================================
--- t/25plsql.t (revision 509)
+++ t/25plsql.t (working copy)
@@ -302,6 +302,9 @@
print "test nvarchar2 arg passing to functions\n";
# http://www.nntp.perl.org/group/perl.dbi.users/24217
+ my $ora_server_version = $dbh->func("ora_server_version");
+ skip "Client/server version < 9.0"
+ if DBD::Oracle::ORA_OCI() < 9.0 || $ora_server_version < 9.8;
my $func_name = "dbd_oracle_nvctest".($ENV{DBD_ORACLE_SEQ}||'');
$dbh->do(qq{
CREATE OR REPLACE FUNCTION $func_name(arg nvarchar2, arg2 nvarchar2)
@@ -313,23 +316,22 @@
return 1;
end if;
END;
- }) or skip("Can't create a function ($DBI::errstr)", 16);
+ }) or skip("Can't create a function ($DBI::errstr)", 15);
my $sth = $dbh->prepare(qq{SELECT $func_name(?, ?) FROM DUAL}, {
# Oracle 8 describe fails with ORA-06553: PLS-561: charset mismatch
ora_check_sql => 0,
});
- ok(0, $sth, "Can't prepare select from function ($DBI::errstr)");
- skip("Can't select from function ($DBI::errstr)", 15) unless $sth;
- ok(0, $sth->bind_columns(\my $returnVal));
+ ok(0, $sth, sprintf("Can't prepare select from function (%s)",$DBI::errstr||''));
+ skip("Can't select from function ($DBI::errstr)", 14) unless $sth;
for (1..2) {
ok(0, $sth->bind_param(1, "foo", { ora_csform => SQLCS_NCHAR }));
ok(0, $sth->bind_param(2, "bar", { ora_csform => SQLCS_NCHAR }));
ok(0, $sth->execute());
- ok(0, $sth->fetch);
+ ok(0, my($returnVal) = $sth->fetchrow_array);
ok(0, $returnVal eq "1");
}
ok(0, $sth->execute("baz",undef));
- ok(0, $sth->fetch);
+ ok(0, my($returnVal) = $sth->fetchrow_array);
ok(0, $returnVal eq "-1");
ok(0, $dbh->do(qq{drop function $func_name}));
}
@@ -348,7 +350,7 @@
ok(0, !$dbh->ping);
exit 0;
-BEGIN { $tests = 83 }
+BEGIN { $tests = 82 }
# end.
__END__