| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > Oracle cursor records |
| Автор: bns12 7.5.2008, 22:02 |
| В базе 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. Может быть кто-нибудь значет, как из него получить данные? Спасибо. |
| Автор: shamber 8.5.2008, 08:27 | ||
А потом посмотрев структуру, выбираешь то что нужно. |
| Автор: ginnie 8.5.2008, 09:23 |
| bns12, у Вас же данные должны в переменной $cursor быть, а не в @row. |
| Автор: ramus 8.5.2008, 21:34 | ||
| предыдущий пост удалил, так как написал чушь Возможно не существенно, но бросилось в глаза: 1. код лучше оформлять как код 2.
именно ORA_RSET а не ORA_SET 3. и в оракле лучше использовать VARCHAR2, а не VARCHAR |