RE: EXT :Re: Trying to use perl to call oracle stored proc to return an object.
Thanks for the reply Robert. PROCEDURE FetchTrackObjbyID ( p_ID IN TRACK.ID%TYPE, p_TARGET OUT TARGET ) PROCEDURE is defined with an IN and OUT param. May have also tried it with an in out vs simply an out param and this made no difference. $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"; Do a bind_param_inout with the OUT and a bind_param with the IN param. E. Scott Stricker 703-561-3671 -Original Message- From: Robert Durgin [mailto:rdur...@texterity.com] Sent: Wednesday, May 02, 2012 12:19 PM To: Stricker, Scott (IS) Cc: dbi-users@perl.org Subject: EXT :Re: Trying to use perl to call oracle stored proc to return an object. Did you specify the direction for each parameter? - Original Message - From: "Scott Stricker (IS)" To: dbi-users@perl.org Sent: Wednesday, May 2, 2012 12:06:05 PM Subject: Trying to use perl to call oracle stored proc to return an object. All: I'm trying to use perl to invoke a stored procedure to return an object. 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 -- Robert Durgin Sr. Software Engineer Texterity • 144 Turnpike Road Southborough , MA 01772 rdur...@texterity.com www.texterity.com
Re: Trying to use perl to call oracle stored proc to return an object.
Did you specify the direction for each parameter? - Original Message - From: "Scott Stricker (IS)" To: dbi-users@perl.org Sent: Wednesday, May 2, 2012 12:06:05 PM Subject: Trying to use perl to call oracle stored proc to return an object. All: I'm trying to use perl to invoke a stored procedure to return an object. 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 -- Robert Durgin Sr. Software Engineer Texterity • 144 Turnpike Road Southborough , MA 01772 rdur...@texterity.com www.texterity.com
Trying to use perl to call oracle stored proc to return an object.
All: I'm trying to use perl to invoke a stored procedure to return an object. 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