On 02/05/12 17:06, Stricker, Scott (IS) wrote:
> All:
> 
> I'm trying to use perl to invoke a stored procedure to return an object.
>

DBD::Oracle does not support support the return of objects via parameters.
It does have some support for fetching object as select list elements.
See the POD for DBD::Oracle.
 
> Oracle Procedure is defined as
> 
> PROCEDURE FetchTrackObjbyID  (  p_ID IN TRACK.ID%TYPE  , p_TARGET OUT TARGET  
> )
> 
> Where p_ID is numeric and p_TARGET is the TARGET object type.
> 
> When I 'execute', I get
> 
> DBD::Oracle::st execute failed: ORA-06550: line 2, column 5:
> PLS-00306: wrong number or types of arguments in call to 'FETCHTRACKOBJBYID'
> ORA-06550: line 2, column 5:
> PL/SQL: Statement ignored (DBD ERROR: error possibly near <*> indicator at 
> char 10 in 'BEGIN
>     <*>FetchTrackObjbyID(:p_id, :p_target);
> END;
> ') [for Statement "BEGIN
>     FetchTrackObjbyID(:p_ID, :p_Target);
> END;
> " with ParamValues: :p_id=1, :p_target=undef] at
> 
> 
> So far, I've got
> 
>     my $i = 5;
>     my $p_Target;  # should this be either @p_Target or %p_Target
>      my $sqlstmt= <<"END_SQL";
> BEGIN
>     FetchTrackObjbyID(:p_ID, :p_Target);
> END;
> END_SQL
> 
>         my $sth = $dbh->prepare($sqlstmt) or die "Can't prepare 
> statement\n$sqlstmt\n$DBI::errstr\n";
>         $sth->bind_param_inout(":p_Target",\$p_Target, 20) or die 
> "bind(target) err is $DBI::errstr";  # Should I specify a bind type and if 
> so, what type?
>         $sth->bind_param(":p_ID",$i) or die "bind(ID) err is  $DBI::errstr\n";
>         $sth->execute();
> 
> Hoping it is something really simple.  Thanks for any help
> 
> E. Scott Stricker @ Work
> 
> 
> 
> 


-- 
Charles Jardine - Computing Service, University of Cambridge
c...@cam.ac.uk    Tel: +44 1223 334506, Fax: +44 1223 334679

Reply via email to