Функции oracle в php

Упражнения по SQL

SELECT (обучающий этап) задачи по SQL запросам 120 штук, DML 10 шт. Дистанционное обучение языку баз данных SQL. Интерактивные упражнения и тестирование по операторам SELECT,INSERT,UPDATE,DELETE языка SQL. SQL remote education. SQL statements exercises. Подзапросы, Соединение таблиц, Функции SQL, Введение в SQL, Скачать книги по SQL. Команды SQL,CREATE SEQUENCE,CREATE SYNONYM,CREATE USER,CREATE VIEW,Create Table,DROP,GRANT,INSERT,REVOKE,SET ROLE,SET TRANSACTION,SQL ALTER TABLE,SQL команды.

вторник, 29 января 2019 г.

Работа с Oracle в PHP

Работа с Oracle в PHP

PHP — рекурсивный акроним «PHP Hypertext Preprocessor». Это интерпретируемый язык программирования с открытым исходным кодом. Он предназначен для генерации веб-документов на сервере.

Этот документ описывает, как PHP взаимодействует с базой данных Oracle. Подразумевается, что у Вас уже установлен и настроен PHP. Проверить его работоспособность можно следующим скриптом:

If PHP is working, you will see «Hello World» below:


echo «Hello world» ;
phpinfo (); // Print PHP version and config info ?>

Попробуйте выполнить этот код из командной строки либо откройте тестовую страницу в Вашем браузере. Если приведенный выше пример не работает, отложите этот документ и добейтесь корректной работы PHP.

Если есть возможность выбора, предпочтение стоит отдать модулю OCI, так как он более оптимизирован и имеет большую функциональность. К примеру, модуль ORA не поддерживает CLOB, BLOB, BFILE, ROWID.

; extension = php_oci8.dll ; extension = php_oracle.dll 
--with-оракул = / путь / к / оракул / дома / реж --with-oci8 = / путь / к / оракул / дома / реж 

echo «Successfully connected to Oracle.\n» ;
OCILogoff ( $c );
> else $err = OCIError ();
echo «Oracle Connect Error » . $err [ text ];
> ?>

echo «Successfully connected to Oracle.\n» ;
ora_commitoff ( $c );
ora_logoff ( $c );
> else echo «Oracle Connect Error » . ora_error ();
> ?>

Читайте также:  Php html background color

Замечание: если у Вас не установлены необходимые переменные окружения, поместите следующие строки в начале каждого скрипта, работающего с Oracle:

PutEnv ( «ORACLE_SID=ORCL» );
PutEnv ( «ORACLE_HOME=/app/oracle/product/9.2.0» );
PutEnv ( «TNS_ADMIN=/var/opt/oracle» );

В случае, если Вы несколько раз в пределах одного скрипта попробуете подключится к базе данных, используя одинаковую комбинацию логин/пароль, Вы получите одно и то же соединение. Если Вам необходимы различные подключения к базе, используйте функцию OCINLogon(). Если вам нужны постоянные соединения, используйте функцию OCIPLogon().

Вероятнее всего, у Вас не включена поддержка Oracle. Вернитесь к вопросу «Как собрать PHP с поддержкой Oracle?». Вам необходимо пересобрать php, если у Вас Linux или раскомментировать загрузку соответствующей библиотеки, если у вас Windows.

Приведенный ниже исходный код демонстрирует, как удалять/создавать новые таблицы, записывать/извлекать из них данные в PHP.

$c = OCILogon ( «scott» , «tiger» , «orcl» );
if ( ! $c ) echo «Невозможно подключится к базе: » . var_dump ( OCIError () );
die();
>

// Удаляем старую табоицу
$s = OCIParse ( $c , «drop table tab1» );
OCIExecute ( $s , OCI_DEFAULT );

// Создаем новую таблицу
$s = OCIParse ( $c , «create table tab1 (col1 number, col2 varchar2(30))» );
OCIExecute ( $s , OCI_DEFAULT );

// Заносим строку в только что созданную таблицу
$s = OCIParse ( $c , «insert into tab1 values (1, ‘Frank’)» );
OCIExecute ( $s , OCI_DEFAULT );

// Заносим данные в таблицу используя конструкцию «bind»
$var1 = 2 ;
$var2 = «Scott» ;
$s = OCIParse ( $c , «insert into tab1 values (:bind1, :bind2)» );
OCIBindByName ( $s , «:bind1» , $var1 );
OCIBindByName ( $s , «:bind2» , $var2 );
OCIExecute ( $s , OCI_DEFAULT );

// Производим выборку из базы данных
$s = OCIParse ( $c , «select * from tab1» );
OCIExecute ( $s , OCI_DEFAULT );
while ( OCIFetch ( $s )) echo «COL1 color: #007700;»>. ociresult ( $s , «COL1» ) .
«, COL2 color: #007700;»>. ociresult ( $s , «COL2» ) . «\n» ;
>

Читайте также:  Test

// Выполняем commit;
OCICommit ( $c );

// Отключаемся от базы данных
OCILogoff ( $c ); ?>

При использовании модуля OCI каждый раз после удачного выполнения ociexecute() автоматически происходит commit, и, таким образом, транзакция сразу же завершается. Вы можете управлять этим процессом, указывая дополнительный параметр OCI_COMMIT_ON_SUCCESS либо OCI_DEFAULT при вызове функции ociexecute(). В случае использования OCI_DEFAULT вы сможете полностью управлять механизмом транзакций, для этого используйте функции OCICommit() и OCIRollback().

Следует учесть, что использование OCI_DEFAULT в одном из вызовов ociexecute() автоматически наследуется для всего подключения к базе данных и будет использовано при дальнейших операциях с базой данных. Если вы не хотите использовать автоматический и ручной механизм управления транзакциями одновременно, используйте OCINLogon().

В случае, если Вы используете модуль ORA, управление транзакциями выглядит немного иначе. Используйте функции ORA_CommitOn() и ORA_CommitOff() для переключения между ручным и автоматическим механизмом управления транзакциями. Для завершения транзакции и отката используйте функции ORA_Commit() и ORA_Rollback() соответственно.

В случае, если после завершения работы скрипта ни разу не выполнялся ни commit, ни rollback, PHP завершит транзакцию командой commit.

В случае, если вы используете модуль OCI, используйте функцию OCIError() для получения массива, содержащего детальную информацию о возникающих ошибках. Если подключений несколько, OCIError() позволяет получить информацию об ошибке в каждом их них индивидуально. Если данная функция вызывается без параметров, она возвращает массив с информацией о последней произошедшей ошибке.

print «\nError code color: #007700;»>. $err [ code ];
print «\nError message color: #007700;»>. $err [ message ];
print «\nError position color: #007700;»>. $err [ offset ];
print «\nSQL Statement color: #007700;»>. $err [ sqltext ]; ?>

В случае, если вы используете модуль ORA, воспользуйтесь функциями ora_error() и errorcode() для получения информации о последней произошедшей ошибке.

print «\nError code color: #007700;»>. ora_errorcode ();
print «\nError message color: #007700;»>. ora_error (); ?>

Читайте также:  Php вывести значение в файл

// Подключаемся к базе данных
$c = OCILogon ( «scott» , «tiger» , «orcl» );
if ( ! $c ) echo «Unable to connect: » . var_dump ( OCIError () );
die();
>

// Создаем хранимую процедуру
$s = OCIParse ( $c , «create procedure proc1(p1 IN number, p2 OUT number) as » .
«begin» .
» p2 := p1 + 10;» .
«end;» );
OCIExecute ( $s , OCI_DEFAULT );

// Вызываем процедуру
$in_var = 10 ;
$s = OCIParse ( $c , «begin proc1(:bind1, :bind2); end;» );
OCIBindByName ( $s , «:bind1» , $in_var );
OCIBindByName ( $s , «:bind2» , $out_var , 32 ); // 32 is the return length
OCIExecute ( $s , OCI_DEFAULT );
echo «Procedure returned value: » . $out_var ;

// Отключаемся от базы данных
OCILogoff ( $c ); ?>

Источник

OCI8 Functions

Here are the translate of some functions from ORA to OCI:

function Ora_Logon ( $usuario , $password )
<
$con = oci_connect ( $usuario , $password );
return $con ;
>

function Ora_Open ( $conexion ) <
$cursor [ 0 ]= $conexion ;
return $cursor ;
>

function Ora_Logoff ( $conexion ) <
>
?>

For use PHPv5 functions in PHPv4 i use simple script:
$funcs =array(
‘oci_connect’ => ‘OCILogon’ ,
‘oci_parse’ => ‘OCIParse’ ,
‘oci_execute’ => ‘OCIExecute’ ,
‘oci_fetch’ => ‘OCIFetch’ ,
‘oci_num_fields’ => ‘OCINumCols’ ,
‘oci_field_name’ => ‘OCIColumnName’ ,
‘oci_result’ => ‘OCIResult’ ,
‘oci_free_statement’ => ‘OCIFreeStatement’ ,
);
// yoy can add yours pairs of funcs.

foreach ( $funcs as $k => $v )
<
if (! function_exists ( $k ))
<
$arg_string = ‘$p0’ ;
for ( $i = 1 ; $i < 20 ; $i ++) <
$arg_string .= ‘,$p’ . $i ;
>
eval ( ‘function ‘ . $k . ‘ () <
list(‘ . $arg_string . ‘)=func_get_args();
return ‘ . $v . ‘(‘ . $arg_string . ‘);
>
‘ );
>
>
?>

simple, but it work. 🙂

  • OCI8
    • Introduction
    • Installing/Configuring
    • Predefined Constants
    • Examples
    • OCI8 Connection Handling and Connection Pooling
    • OCI8 Fast Application Notification (FAN) Support
    • OCI8 Transparent Application Failover (TAF) Support
    • OCI8 and DTrace Dynamic Tracing
    • Supported Datatypes
    • OCI8 Functions
    • OCICollection
    • OCILob
    • OCI8 Obsolete Aliases and Functions

    Источник

Оцените статью