(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)
oci_set_edition — 设置数据库版本
设置后续连接将使用的对象的数据库“版本”。
Oracle 版本允许使用相同模式和对象名称同时运行应用程序的不同版本。这对于升级实时系统很有用。
在调用 oci_connect()、oci_pconnect() 或 oci_new_connect() 之前调用 oci_set_edition()。
如果设置的版本在数据库中无效,即使 oci_set_edition() 返回成功,连接也会失败。
使用持久连接时,如果具有请求的版本设置的连接已经存在,则会重用该连接。否则,将创建不同的持久连接
edition
Oracle 数据库版本名称,先前使用 SQL "CREATE EDITION
" 命令创建。
示例 #1 两个脚本可以同时使用不同版本的 myfunc()
<?php
// 文件 1
echo "应用程序的版本 1\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 "结果是 $r\n";
?>
<?php
// 文件 2
echo "应用程序的版本 2\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 "结果是 $r\n";
?>
注意: Oracle 版本要求
此函数从 Oracle 11gR2 开始可用。
为避免不一致和意外错误,请勿使用 ALTER SESSION SET EDITION 在持久连接上更改版本。
为避免在使用版本和 DRCP 与 Oracle 11.2.0.1 时出现不一致和意外错误,请在 oci8.connection_class 和应用程序使用的版本名称之间保持一对一对应关系。给定连接类的每个池化服务器都应只与一个版本一起使用。此限制已在 Oracle 11.2.0.2 中删除。