Пакет возвращает курсор, как им пользоваться?

SiZE

Новичок
Пакет возвращает курсор, как им пользоваться?

PHP:
$date_from = '01.10.2009';
$date_to = '05.10.2009';

$curs = oci_new_cursor($this->storage->db->conn['2']);
$stmt = oci_parse ($this->storage->db->conn['2'], "begin :res :=test.get_data(:date_from,:date_to); end;");

oci_bind_by_name ($stmt, ":date_from", $date_from, 10);
oci_bind_by_name ($stmt, ":date_to", $date_to, 10);
oci_bind_by_name ($stmt, ":res", $curs, -1, OCI_B_CURSOR);

oci_execute($stmt);
oci_execute($curs);

while ($data = oci_fetch_row($curs)) {
   var_dump($data);
}
oci_free_statement($stmt);
oci_free_statement($curs);
Функция возвращает курсор, который возвращает некие данные, для примера пару строк:
Дата | Имя | ID таблицы
01.10.2009 15:33:01 | строка 1 | 12
01.10.2009 15:34:01 | строка 1 | 4
01.10.2009 15:35:01 | строка 2 | 12
02.10.2009 15:36:01 | строка 1 | 3

Данные нужны сагрегированный и отсортированные по нужному полю. Я думаю что надо этот курсор вставить в SQL запрос и сделать что то навроде такого: "SELECT * FROM :res", как правильно должно быть не знаю. Подскажите куда копать?
 

Falc

Новичок
Курсор в основном предназначен для передачи результирующего набора из одной среды в другую (в данном случае из SQL в PHP), сделать из него селект нельзя.
Грамотным решение будет возвращать данные в нужном тебе виде. Если это не возможно, то можно применить кастыль как фетч курсора, с запихиванием в во временную или pl/sql таблицу, или же пайплайн функцию:
http://www.sql.ru/faq/faq_topic.aspx?fid=221
http://www.sql.ru/faq/faq_topic.aspx?fid=537
 
Сверху