Click here to Skip to main content
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 9: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 OriginalGriff 520
1 Maciej Los 290
2 Richard MacCutchan 265
3 BillWoodruff 265
4 Suraj Sahoo | Coding Passion 155
0 OriginalGriff 8,764
1 Sergey Alexandrovich Kryukov 7,437
2 DamithSL 5,639
3 Maciej Los 5,279
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web01 | 2.8.1411028.1 | Last Updated 19 Jan 2013
Copyright © CodeProject, 1999-2014
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