#perl
#perl
Вопрос:
Я нахожу трудности с извлечением записей из хранимой процедуры (oracle) путем вызова ее через perl script. SP принимает 1 входной и выходной параметр cursor
———Вот сценарий perl_————-
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 statementn";
my @row=$cursorRecords->fetchrow_array();
print("row:@rown");
print("cursorRecords:$cursorRecordsn");
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;
В таблице JobEnvironments
также есть записи
Может ли ссылка в bind() $cursorRecords
может содержать записи из таблицы? Может кто-нибудь, пожалуйста, помочь с этим?
—-запись из таблицы——
select * from JobEnvironments
Category,EnvVar,Value,last_update
-----------------------------------
tkuat','REUTFEED_SUBJ','RSF.REC',;'2010-04-07 06:00:33.0'