ТОП-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. Базы данных. Часть Двадцать Вторая.


31-03-2015

boolean ocibindbyname (resource statement, string placeholder, reference variable, integer length, integer type)
Функция ocibindbyname (листинг 17.32) привязывает маркер Oracle к переменной PHP. Ей необходимо передать идентификатор оператора, созданного функцией ociparse, имя маркера, ссылку на переменную PHP и максимальную длину связанных данных. Для того чтобы воспользоваться длиной переменной, переданной аргументом variable, следует установить значение -1.
Необязательный аргумент type задает тип данных и обязателен при подключении к данным абстрактного типа. При установке типа данных используется одной из следующих констант: OCI_B_BLOB, OCI_B_CFILE, OCI_B_CLOB, OCI_B_FILE или OCI_B_ROWID. Перед привязкой к абстрактному типу данных воспользуйтесь функцией ocinewdescriptor. В аргументе length необходимо установить значение -1.
В листингах 17.33 и 17.34 продемонстрировано использование ocibindbyname в хранимых процедурах.

Листинг 17.32. Функция ocibindbyname
<?php
// задать добавляемые данные
$NewEmployee = array(
array(8001, 'Smith', 'Clerk', 30), array(8002, 'Jones', 'Analyst', 20), array(8003, 'Atkinson', 'President', 40)
);
// подключиться к базе данных
$Link = ocilogon("scott", "tiger");
// создать запрос
$Query = "INSERT INTO emp " .
"(EMPNO, ENAME, JOB, HIREDATE, DEPTNO) " .
"VALUES (:empno, :ename, :job, SYSDATE, :deptno )
";
// проанализировать запрос $Statement = ociparse($Link, $Query); //создать дескриптор абстрактного типа данных $RowID = ocinewdescriptor($Link, OCI_D_ROWID); // связать вводимые и выводимые значения
ocibindbyname($Statement, ":empno", $EmployeeNumber, 32); ocibindbyname($Statement, ":ename", $EmployeeName, 32); ocibindbyname($Statement, ":job", $Job, 32); ocibindbyname($Statement, ":deptno", $DeptNo, 32); //обход каждого нового работника foreach($NewEmployee as $e)
{
//задать значения столбцов $EmployeeNumber = $e[0]; $EmployeeName = $e[1];
$Job = $e[2]; $DeptNo = $e[3];
//выполнить запрос без автоматического выполнения ociexecute($Statement, OCI_DEFAULT);
}
// освободить оператор
//ocifreestatement($Statement);
// создать запрос для получения содержимого
$Query = "SELECT EmpNo, EName, Job, HireDate, DName " . 
"FROM emp JOIN dept ON (emp.DeptNo = dept.DeptNo)"; // проанализировать запрос $Statement = ociparse($Link, $Query); //выполнить запрос при отключенном autocommit ociexecute($Statement, OCI_DEFAULT); // выбрать строки
while(ocifetchinto($Statement, $Columns,
OCI_NUM | OCI_RETURN_NULLS | OCI_RETURN_LOBS))
{
print(implode(",", $Columns) . "<br>n");
}
// освободить оператор ocifreestatement($Statement); // отменить вставки
//При обычной работе этого делать не нужно, но если каждый раз
//отменять вставки, то можно повторять оператор снова и снова
ocirollback($Link);
// закрыть соединение
ocilogoff($Link);
?>

| Листинг 17.33. Процедура выборки имени работника
CREATE OR REPLACE PROCEDURE get_emp_name (
emp_number IN emp.Empno%TYPE, emp_name OUT emp.Ename%TYPE) AS
BEGIN
SELECT Ename
INTO emp_name FROM emp
WHERE Empno = emp_number;
END;

I Листинг 17.34. Функция ocibindbyname и хранимые процедуры_
<?php
// открыть соединение
$Connection = ocilogon("scott", "tiger"); //создать оператор, вызывающий хранимую процедуру $Query = "BEGIN get_emp_name(74 99, :emp_name); END;"; $Statement = ociparse($Connection, $Query); // привязать к имени маркер
ocibindbyname($Statement, ":emp_name", $EmployeeName, 32);
// выполнить оператор
ociexecute($Statement);
print($EmployeeName);
// освободить память для оператора
ocifreestatement($Statement);
// закрыть соединение
ocilogoff($Connection);
?>

 Функция ocicancel предназначена для завершения чтения из курсора.

boolean ocicollappend(object collection, string value)
Функция ocicollappend осуществляет добавление в коллекцию.
boolean ocicollassign(object collection, object collection2)
Функция ocicollassign присваивает одну коллекцию другой.
boolean ocicollassignelem(object collection, integer index, string value)
Функция ocicollassignelem присваивает заданное значение коллекции по заданному индексу.
string ocicollgetelem(object collection, integer index)
Функция ocicollgetelem возвращает значение записи коллекции по заданному индексу.
integer ocicollmax(object collection)
Функция ocicollmax предназначена для получения максимального значения коллекции. Для массивов этим значением является максимальная длина.
integer ocicollsize(object collection)
Функция ocicollsize предназначена для получения размера коллекции.
boolean ocicolltrim(object collection, integer number)
Функция ocicolltrim удаляет указанное количество элементов с конца коллекции.
boolean ocicolumnisnull(resource statement, value column)
Функция ocicolumnisnull предназначена для проверки столбца на пустое значение. Столбцы можно задавать по номерам, и в этом случае их нумерация начинается с единицы. Кроме того, столбцы можно задавать по их именам.
string ocicolumnname(resource statement, integer column)
Функция ocicolumnname возвращает имя столбца по заданному номеру столбца. Столбцы можно задавать по номерам, и в этом случае они нумеруются с единицы. Кроме того, столбцы можно задавать по их именам.

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



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