Hello,
I'm having an issue with getting a sys_refcursor back from a function.
Particulars:
PERL version: 5.8.3
Oracle Client: 10.2.0.4 32 bit (using lib32)
DBI version 1.41
The function returns a sys_refcursor.
$sth = $dbh->prepare(q{begin :csr := my_function('12345','','');
end;});
my $sth2;
$sth->bind_param_inout(":csr", \$sth2, 0, { ora_type => ORA_RSET } );
$sth->execute();
$sth->finish;
$dbh->disconnect;
It fails and produces the following output:
Field 9 has an Oracle type (108) which is not explicitly supported
at ./test4_ora.pl line 23.
Field 18 has an Oracle type (108) which is not explicitly supported
at ./test4_ora.pl line 23.
Field 19 has an Oracle type (108) which is not explicitly supported
at ./test4_ora.pl line 23.
Field 20 has an Oracle type (108) which is not explicitly supported
at ./test4_ora.pl line 23.
DBD::Oracle::st execute failed: ERROR OCIDefineObject call needed but
not implemented yet [for Statement "declare csr sys_refcursor;
begin :csr := my_function('12345','',''); end;" with
ParamValues: :csr=DBI::st=HASH(0x33180c)] at ./test4_ora.pl line 23.
However I can execute the function if I don't use the
bind_param_inout:
$sth = $dbh->prepare(q{declare csr sys_refcursor; begin csr :=
my_function('12345','',''); end;});
$sth->execute();
and it does not give me any errors.
I've tried:
$sth = $dbh->prepare(q{declare csr sys_refcursor; begin csr :=
my_function('12345','',''); csr2 := csr; end;});
my $sth2;
$sth->bind_param_inout(":csr2", \$sth2, 0, { ora_type => ORA_RSET } );
and it gives me the same Oracle type (108) errors.
Is there an issue with the DBI version I'm using along with my Oracle
client or am I not doing something right?
I appreciate your help.
Phil