array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.oci-set-edition.php', 1 => 'oci_set_edition', ), 'up' => array ( 0 => 'ref.oci8.php', 1 => 'OCI8 関数', ), 'prev' => array ( 0 => 'function.oci-set-db-operation.php', 1 => 'oci_set_db_operation', ), 'next' => array ( 0 => 'function.oci-set-module-name.php', 1 => 'oci_set_module_name', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/oci8/functions/oci-set-edition.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)
oci_set_edition — データベース・エディション を設定します
後続の接続で使用する、オブジェクトのデータベース・エディション を設定します。
オラクル・エディション により、同じスキーマ名とオブジェクト名を使って、複数のバージョンのアプリケーションが稼動できます。これは、稼動中のシステムをアップグレードするときに便利です。
oci_connect(), oci_pconnect() や oci_new_connect() を呼び出す前に、oci_set_edition() をコールして下さい。
データベースで無効なエディションが設定されると、たとえ oci_set_edition() が成功しても接続は失敗します。
持続的接続を使用している場合、リクエストされたエディション設定値による接続がもしすでにあれば、それが再利用されます。それ以外の場合、持続的接続が別途作成されます。
edition
SQLコマンド "CREATE EDITION
" であらかじめ作成されたオラクル・データベース・エディション名
例1 異なるバージョンの myfunc() が利用できる例
<?php
// File 1
echo "Version 1 of application\n";
oci_set_edition('ORA$BASE');
$c = oci_connect('hr', 'welcome', 'localhost/XE');
$s = oci_parse($c, "begin :r := myfunc(); end;");
oci_bind_by_name($s, ":r", $r, 20);
oci_execute($s);
echo "The result is $r\n";
?>
<?php
// File 2
echo "Version 2 of application\n";
oci_set_edition('E1');
$c = oci_connect('hr', 'welcome', 'localhost/XE');
$s = oci_parse($c, "begin :r := myfunc(); end;");
oci_bind_by_name($s, ":r", $r, 20);
oci_execute($s);
echo "The result is $r\n";
?>
注意: Oracle バージョン必要条件
この関数は Oracle 11gR2 以降で利用可能です
持続的接続を使用しているときに "ALTER SESSION SET EDITION" を使ってデータベース・エディションを変更してはいけません。これは設定の不整合や予想外のエラーを避けるためです。
Oracle 11.2.0.1 でエディションや DRCP を使用する際の設定の不整合や予想外のエラーを避けるため、oci8.connection_class と アプリケーションで使用されるエディション名との間が1対1の対応になるように保ってください。 与えられた接続クラスのプールされたサーバーはそれぞれ、1つのエディションだけで使われるべきです。 この制約は、Oracle 11.2.0.2 以降ではなくなりました。