在Perl脚本中从oracle StoredProcess的游标检索结果
我发现通过perl脚本调用存储过程(oracle)很难从中获取记录。SP接受1个输入,输出参数为游标 --------下面是perl脚本_------------- 表在Perl脚本中从oracle StoredProcess的游标检索结果,perl,Perl,我发现通过perl脚本调用存储过程(oracle)很难从中获取记录。SP接受1个输入,输出参数为游标 --------下面是perl脚本_------------- 表JobEnvironments也有一个记录 bind()$cursorRecords中的引用能否保存表中的记录? 有人能帮忙吗 ----从表中记录------ my $dbh = DBI->connect("dbi:Oracle://**********",'**',***) or die "
JobEnvironments
也有一个记录
bind()$cursorRecords
中的引用能否保存表中的记录?
有人能帮忙吗
----从表中记录------
my $dbh = DBI->connect("dbi:Oracle://**********",'**',***) or die "Couldn't connect to database: " . DBI->errstr;// successfully connected
my $cursorRecords;
my $categoryBind = 'tkuat';
my $sth= $dbh->prepare(q{
BEGIN
GetJobEnvironments(:category,:cursorTest);
END;
});
$sth->bind_param(":category", $categoryBind);
$sth->bind_param_inout(":cursorTest", \$cursorRecords,20000,{ ora_type => ORA_RSET});
$sth->execute or die "Can't execute SQL statement\n";
my @row=$cursorRecords->fetchrow_array();
print("row:@row\n");
print("cursorRecords:$cursorRecords\n");
print Dumper($sth);
script is executing but not printing the records from the database
---O/p:--------
row:
cursorRecords:DBI::st=HASH(0x1564318)
$VAR1 = bless( {}, 'DBI::st' );
------------------------------
SP in Database looks as below
create or replace PROCEDURE GetJobEnvironments
(
v_category IN CHAR DEFAULT NULL,
v_cursor OUT SYS_REFCURSOR
)
AS
BEGIN
IF ( v_category IS NULL ) THEN
BEGIN
OPEN v_cursor FOR
SELECT EnvVar ,
VALUE
FROM JobEnvironments ;
END;
ELSE
BEGIN
OPEN v_cursor FOR
SELECT EnvVar ,
VALUE
FROM JobEnvironments
WHERE Category = v_category ;
END;
END IF;
EXCEPTION
WHEN OTHERS THEN raise_application_error(-20002,SQLCODE||':'||SQLERRM);
END;
select * from JobEnvironments
Category,EnvVar,Value,last_update
-----------------------------------
tkuat','REUTFEED_SUBJ','RSF.REC',;\'2010-04-07 06:00:33.0'