Click here to Skip to main content
11,641,209 members (63,818 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: Perl Win32 Oracle ODBC
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 18-Jan-13 8:22am

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

try this??

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 ...
}
  Permalink  
Comments
Member 9767982 at 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)

  Print Answers RSS
0 Mika Wendelius 400
1 OriginalGriff 205
2 DamithSL 203
3 CPallini 185
4 Afzaal Ahmad Zeeshan 129
0 Mika Wendelius 400
1 OriginalGriff 205
2 DamithSL 203
3 CPallini 185
4 Afzaal Ahmad Zeeshan 129


Advertise | Privacy | Mobile
Web03 | 2.8.150731.1 | Last Updated 19 Jan 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100