mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Most oci8 tests fail out-of-the-box because a typical host won't have an Oracle database instance available. Other database drivers like mysqli and pgsql address this problem with an include file, inserted into SKIPIF, that skips the test if no connection at all can be made. This commits adds such a file (skipifconnectfailure.inc) for oci8, and adds the corresponding SKIPIF to any tests that connect to a database. Closes GH-11804 * ext/oci8/tests/lob_aliases.phpt: drop unnecessary SKIPIF.
57 lines
1.4 KiB
PHP
57 lines
1.4 KiB
PHP
--TEST--
|
|
Bug #51291 (oci_error() doesn't report last error when called two times)
|
|
--EXTENSIONS--
|
|
oci8
|
|
--SKIPIF--
|
|
<?php
|
|
require_once('skipifconnectfailure.inc');
|
|
$target_dbs = array('oracledb' => true, 'timesten' => false); // test runs on these DBs: different error messages from TimesTen
|
|
require(__DIR__.'/skipif.inc');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
|
|
require(__DIR__.'/connect.inc');
|
|
|
|
echo "\nTest 1 - Execute - after successful 2nd query with same statement\n";
|
|
|
|
$s = oci_parse($c, "declare e exception; begin if :bv = 1 then raise e; end if; end;");
|
|
$bv = 1;
|
|
oci_bind_by_name($s, ":bv", $bv);
|
|
$r = @oci_execute($s, OCI_DEFAULT);
|
|
if (!$r) {
|
|
var_dump(oci_error(), oci_error($c), oci_error($s));
|
|
$bv = 0;
|
|
$r = oci_execute($s, OCI_DEFAULT);
|
|
echo "Execute status is ";
|
|
if (is_null($r)) echo "null";
|
|
else if ($r === false) echo "false";
|
|
else if ($r === true) echo "true";
|
|
else echo $r;
|
|
echo "\n";
|
|
echo "2nd call after successful execute\n";
|
|
var_dump(oci_error(), oci_error($c), oci_error($s));
|
|
}
|
|
|
|
?>
|
|
--EXPECTF--
|
|
Test 1 - Execute - after successful 2nd query with same statement
|
|
bool(false)
|
|
bool(false)
|
|
array(4) {
|
|
["code"]=>
|
|
int(6510)
|
|
["message"]=>
|
|
string(72) "ORA-06510: PL/SQL: %s
|
|
ORA-06512: %s"
|
|
["offset"]=>
|
|
int(0)
|
|
["sqltext"]=>
|
|
string(64) "declare e exception; begin if :bv = 1 then raise e; end if; end;"
|
|
}
|
|
Execute status is true
|
|
2nd call after successful execute
|
|
bool(false)
|
|
bool(false)
|
|
bool(false)
|