in reply to Input output binding using DBI

If I may shamelessly advertise my DBIx::ProcedureCall module, which wraps stored procedures into Perl subroutines and takes care of issuing SQL and binding parameters:
use DBIx::ProcedureCall qw( Par_Reports_Pos:package:procedure ); my $outretcode; my $outretmsg; Par_Reports_Pos::sun_t_attm_temp_posm1d002 ( $dbh, \$outretcode, \$outretmsg);
Note that you have to pass references (like \$outretmsg) if you bind OUT parameters (because the values have to go somewhere). Pure DBI code would look like:
$sth->bind_param_inout('retCode', \$outretcode, 100);

Replies are listed 'Best First'.
Re^2: Input output binding using DBI
by Nesh (Beadle) on Apr 06, 2005 at 19:24 UTC
    Hi Its working with the Pure DBI code. But when I was trying to use : use DBIx::ProcedureCall qw( Par_Reports_Pos:package:procedure ); it could not be installed as I am using perl 5.6.1 Now my script takes a procedure name and accordingly executes it. Is there a way that the prepare statement can take any procedure name from the command line and execute it. Thanks
      it could not be installed as I am using perl 5.6.1

      Oh.. Sorry about that. The module does state that it needs 5.8, but that is just because I made it on 5.8. I do not think it really depends on 5.8. I will try to find out if it works on 5.6 and if so, fix the version requirement.

      Is there a way that the prepare statement can take any procedure name from the command line and execute it?

      It is not difficult to just take a procedure name and have your program write the SQL to invoke it dynamically (this is, after all, how DBIx::ProcedureCall works). The tricky part is figuring out how many parameters and return values you need, and how they need to be bound. Especially OUT parameters (which you seem to use) are difficult.

      Update: Version 0.08 of DBIx::ProcedureCall should now also work on Perl 5.6 and includes a command line tool that lets you do

      perl -MDBIx::ProcedureCall::CLI -e procedure Par_Reports_Pos.sun_t_att +m_temp_posm1d002 :code :msg