I've searched the DBI mailing list archive, the perldoc, and various example sites and 
have found
no way to execute a pl/sql function that returns an abstract data type (i.e., a 
record). The
example that I'm trying to construct is to call sys.utl_file.fopen() which returns a 
record.

BTW, why would anyone define an adt with only one member; especially for fopen() which 
has always
returned an integer (and probably always will return an integer)?

use DBI;
use DBD::Oracle;
my ($udump, $filename) = ("/usr/local/oracle/admin/V816/udump", "ora_4709.trc");
my ($fh, %sth) = (undef,undef);
my $dbh = DBI->connect("dbi:Oracle:", "", "");
$sth{open} = $dbh->prepare("begin :fh := sys.utl_file.fopen(:loc, :file, 'r', 32767); 
end;");
$sth{open}->bind_param_inout(":fh", \$fh, 20);  # this is param that causes the exec 
to fail
$sth{open}->bind_param(":loc", $udump);
$sth{open}->bind_param(":file", $filename);
$sth{open}->execute;
exit 0;

=====
Jeff Holt
Performance Specialist
Hotsos, LLC
[EMAIL PROTECTED]
817.821.9553

__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/

Reply via email to