ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Базы данных. Часть Двадцать Пятая.


03-04-2015

integer ocinewcursor(integer link)
Функция ocinewcursor предназначена для создания курсора. Возвращаемый идентификатор курсора аналогичен идентификатору оператора. Для освобождения памяти, занятой курсором, используется функция ocifreecursor. Как видно в листинге 17.40, курсор можно использовать для получения данных, возвращаемых хранимой процедурой. В листинге 17.39 показан пакет, используемый в листинге 17.40.
Для того чтобы использовать курсор, его необходимо сначала создать с помощью функции ocinewcursor. Проанализируйте запрос, содержащий маркеры, и присоедините маркер к курсору. Выполните оператор, а затем курсор. Теперь можно производить операцию чтения из курсора совсем так же, как из выполненного оператора.

| Листинг 17.39. Пакет Oracle со ссылочными курсорами_
CREATE OR REPLACE PACKAGE emp_data AS
TYPE EmpCurTyp IS REF CURSOR RETURN emp%ROWTYPE; PROCEDURE open_emp_cv (
emp_number IN emp.empno%TYPE, emp_cv IN OUT EmpCurTyp); 
END emp_data;
CREATE OR REPLACE PACKAGE BODY emp_data AS
PROCEDURE open_emp_cv (
emp_number IN emp.empno%TYPE, emp_cv IN OUT EmpCurTyp) IS
BEGIN
OPEN emp_cv FOR SELECT * FROM emp
WHERE empno = emp_number; END open_emp_cv; END emp_data;

Листинг 17.40. Функция ocinewcursor

<?php
// открыть соединение
$Connection = ocilogon("scott", "tiger"); // создать курсор
$Cursor = ocinewcursor($Connection);
//создать оператор, который вызывает хранимую процедуру $Query = "BEGIN emp_data.open_emp_cv(79 02, :myrow); END;"; $Statement = ociparse($Connection, $Query); // присоедините маркер к курсору
ocibindbyname($Statement, ":myrow", $Cursor, -1, OCI_B_CURSOR);
// выполнить оператор
ociexecute($Statement);
// выполнить курсор
ociexecute($Cursor);
//получить строку из курсора
while(ocifetchinto($Cursor, $Column,
OCI_NUM | OCI_RETURN_NULLS))
{
print(implode(',', $Column) . "<br>n");
}
//освободить память для оператора
ocifreestatement($Statement);
// освободить строку
ocifreecursor($Cursor);
// закрыть соединение
ocilogoff($Connection);
?>

string ocinewdescriptor(resource connection, integer type)
Функция ocinewdescriptor выделяет память под дескрипторы и локаторы LOB. По умолчанию аргумент type задает файл, но можно задать значение OCI_D_FILE, OCI_D_LOB или OCI_D_ROWID. Пример применения этой функции см. в описании функции ocibindbyname.
integer ocinlogon(string user, string password, string sid)
Функция ocinlogon устанавливает уникальное подключение к базе данных Oracle. Идентификатор, который она возвращает, используется при создании операторов, курсоров и дескрипторов. Необходимо задавать аргументы user и password. Необязательный аргумент sid задает сервер; в том случае, если он отсутствует, используется переменная среды ORACLE_SID. Сравните эту функцию с функциями ocilogon и ociplogon.
integer ocinumcols(resource statement)
Функция ocinumcols возвращает количество столбцов в операторе.
integer ociparse(resource connection, string query)
Функция ociparse делает из запроса оператор. Для нее требуется действующий идентификатор соединения.
integer ociplogon(string user, string password, string sid)
Функция ociplogon создает устойчивое соединение с базой данных Oracle. Эти соединения существуют так же долго, как и процесс на сервере. При запросе устойчивого соединения можно получить соединение, которое уже существует, избегая тем самым перегрузки, вызванной созданием нового соединения. Идентификатор, который возвращает эта функция, используется при создании операторов, курсоров и дескрипторов. Аргументы user и password обязательны. Необязательный аргумент sid задает сервер; в том случае, если он отсутствует, используется переменная среды ORACLE_SID. Сравните эту функцию с функциями ocilogon и ocinlogon.
string ociresult(resource statement, value column)
Функция ociresult предназначена для получения имен столбцов текущей строки. Столбец может обозначаться номером или именем. Столбцы пронумерованы с единицы. Результаты возвращаются в виде строк за исключением случаев LOB, ROWID и FILE. Пример использования этой функции см. в описании функции ocifetch.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Базы данных. Часть Двадцать Четвёртая. PHP. Базы данных. Часть Двадцать Шестая.