Click here to Skip to main content
15,860,972 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I'm using Perl 5, version 14.The Win32::ODBC is VERSION = '0.034'; and Oracle as database. Im able to reteive information from the database using queries like "emp_id, emp_name from emp" by the following code


use Win32::ODBC;

$db= new Win32::ODBC("DSN=datasourcename;UID=username;PWD=passwrd") ||
+ die "Error: " . Win32::ODBC::Error();


$db->Sql("SELECT emp_Id, emp_name, salary FROM Sample.Emp");

while($db->FetchRow())
{
@values = $db->Data;
print @values;
}
$db->Close();

Instead of using quries in the perl program, I like to use stored procedures. I have created a storedproc called sp_rank.


PROCEDURE sp_rank(p_cursorVar out CursorType)
is
begin
open p_cursorVar for
select emp_id, emp_name from emp;

End sp_rank;

I would like to know how to pass storedproc name in the perl and retrieve the data.
Posted

1 solution

try this??

PERL
my $ST=$DB->prepare("call apps.package_name.proc(?, ?, ?)");
my ($ST_result, $arg1, $arg2);
...
$ST->bind_param(1, $arg1);
$ST->bind_param(2, $arg2);
$ST->bind_param_inout(3, \$ST_result, 0, { ora_type=>ORA_RSET } );
$ST->execute();
while (my $hr = $ST_result.fetchrow_hashref) {
    ... process data ...
}
 
Share this answer
 
Comments
Member 9767982 20-Jan-13 11:47am    
This code dont work for win32::ODBC.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900