Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Oracle cursor records


Автор: bns12 7.5.2008, 22:07
В базе Oracle есть хранимая функция:
Код

TYPE Customers_t IS RECORD
{
  name VARCHAR(256),
  id VARCHAR(8)
}

TYPE CustomersCur IS REF CURSOR RETURN Customers_t.

FUNCTION fetchCustomers
RETURN CustomersCur_t

В SQLPLUS запрос "select queries.fetchCustomers from dual" возвращает все данные. Когда делаю это на perl, курсор возвращает HASH. А как достать из него данные - непонятно.
Код

my $db=DBI->connect(....);
my $sql='BEGIN OPEN :rc FOR SELECT queries.fetchCustomers FROM dual;END;';
my $cursor;
my $pst=db->prepare($sql);
$pst->bind_param_inout(":rc",\$cursor, 0, {ora_type=>ORA_SET});
$pst->execute();
while( my @row = $cursor->fetchrow_array(){
  print @row;
}

Вот этот самы row содержит DBI::st=HASH.

Может быть кто-нибудь значет, как из него получить данные?

Спасибо. 

Автор: Sqlninja 8.5.2008, 09:36
Оракловый кусок правильный. Это вопрос в форум по perl.

Автор: LSD 8.5.2008, 13:14
Модератор: перемещено из Oracle.

Автор: shamber 8.5.2008, 13:18
bns12, вы зачем cross-posting'ом балутесь?

Автор: nitr 16.5.2008, 01:58
Лучше прочесть документацию к DBI и DBD::Oracle.

Код
use Data::Dumper 'Dumper';
...
while (...) {
    print Dumper(@row);
}


З.Ы.:
bns12, в листинге у вас опечатки, как оно вообще работает...
Код
while( my @row = $cursor->fetchrow_array(){
  print @row;
}

где закрыв.скобка для цикла? smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)