Hey folks.  I'm at the depilatory stage on this one.  I have two stored
procedures, the first of which is (sort of) getting executed correctly,
and the second of which is dying with a so-far-mystifying error message.

DBD::Oracle 1.0.6
Oracle Server version 8.1.6.3.0

DESCRIBE on the two procedures gets me:

PROCEDURE new_item
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 TN                             VARCHAR2(128)           IN
 TTL                            VARCHAR2(255)           IN
 KW                             VARCHAR2(255)           IN
 NEWID                          NUMBER(38)              OUT

Which I call (mostly successfully) with 

my $sth = $db->prepare(q{
                        BEGIN new_item(:1, :2, :3, :4); END;});
                $sth->bind_param(1,$doc_type, {TYPE=>'VARCHAR2(128)'});
                $sth->bind_param(2,$question, {TYPE=>'VARCHAR2(255)'});
                $sth->bind_param(3,$keywords, {TYPE=>'VARCHAR2(255)'});
                $sth->bind_param_inout(4, \$insertid, 100);
                $sth->execute();

The failure lies in the fact that $insertid is still null when we're all
done.

The second procedure is eerily similar, but for the fact that one of the
fields is a CLOB:

PROCEDURE new_version
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 DOCID                          NUMBER(38)              IN
 NEWEDITOR                      NUMBER(38)              IN
 NEWDATA                        CLOB                    IN
 NEWID                          NUMBER(38)              OUT

And I call this one (unsuccessfully) with :
                $sth = $db->prepare(q{
                        BEGIN new_version(:1, :2, :3, :4); END;});
                $sth->bind_param(1,$insertid, {TYPE=>'NUMBER(38)'});
                $sth->bind_param(2,$owner_uid, {TYPE=>'NUMBER(38)'});
                $sth->bind_param(3,$data, {TYPE=>'CLOB'});
                $sth->bind_param_inout(4, \$version_id, 100);
                $sth->execute();

The error message is the dreaded, apparently false, 

DBD::Oracle::st execute failed: ORA-06550: line 2, column 10: PLS-00306:
wrong number or types of arguments in call to 'NEW_VERSION'
ORA-06550: line 2, column 10: PL/SQL: Statement ignored (DBD ERROR:
OCIStmtExecute) at /usr/local/www/cgi-bin/docmgr line 223. 

Running under trace level 2, peeked through the log, and got little more
than that.  If needed, of course I can post it.

Any ideas what might be going wrong?

thanks for any help!

AC




Reply via email to