Bob McGowan wrote:
I am interested in this one Bob here are my words on it.
Hi,
I've searched the archive at www.mail-archive.com and have not found any
references to this specific error number.
I've been using a PL/SQL function from Perl DBI this way:
$cursor = $dbHandle->prepare(q{
BEGIN
append_comments(?, ?);
END;
});
$cursor->execute($incident, $newComment);
But this uses the default VARCHAR2 type for the comment placeholder and
the application occasionally has problems with data exceeding the buffer
size.
So, I want to change to using a LOB type, like this:
$cursor = $dbHandle->prepare(q{
BEGIN
append_comments(:incident, :comments);
END;
});
$cursor->bind_param(":incident", $newIncident);
$cursor->bind_param(":comments", $comments,{ora_type => ORA_CLOB});
$cursor->execute();
This works, allowing data sets larger than 32K. It properly updates the
table, but when it is done, I get this:
(in cleanup) DBD::Oracle::st DESTROY failed: \
(DBD (UNKNOWN OCI STATUS 1041): OCILobFreeTemporary) [for Statement "
This is not ORA-01041 error it is a 'unknown OCI status' that is '1041'
and this is generated from DBD::Oracle by the return code when the
'OCILobFreeTemporary' is called
Me thinks that DBD::Oracle either is not releasing a lob correctly or the
function append_comments is not release your temp lob
or some combination of both.
BEGIN
append_comments(:incident, :comments);
END;
"], <> line 3.
I've talked with support at Oracle, and they insist the error code must
be "ORA-01041 : internal error. hostdef extension doesn't exist."
I can "capture" this error by redirecting stderr to /dev/null, and so
far as I can tell, nothing "bad" is happening, but I don't feel very
comfortable with this as a "solution".
Many thanks in advance ;)
What I want you to do so I can properly debug this is
1) tell me what version of DBD::Oracle you are useing
2) what version of Oracle
3) what platform is it running on
4) what version of Perl
finally
If you are using a later version of DBD::Oracle I would like you to
rerun your code but this time do this
$dbd->{dbd_verbose}=15;
after you connect and then send me all the output from a test run of you .PL
cheers
John Scoles