mirror of
https://github.com/php/php-src.git
synced 2025-01-08 20:17:28 +08:00
d99f05f1a2
collections, statements and BLOBs seem to be working ok though there are still some things to be done in order to make oci_bind_array_by_name() work with U-strings Notes: - in Unicode mode OCI8 always speaks to Oracle server using UTF-16, so all the conversions are done by the client lib. This is why character set parameter of oci_connect() and NLS_LANG are ignored in U-mode. - BLOBs and CLOBs behave quite differently in U-mode. Reading data from a CLOB would result in Unicode string, while BLOBs would return binary string. Also, all LOB utilities work with _bytes_ when BLOB is used and _characters_ when it's CLOB. It's not that obvious, but it does make a lot of sense to me.
45 lines
840 B
PHP
45 lines
840 B
PHP
--TEST--
|
|
oci_define_by_name()
|
|
--SKIPIF--
|
|
<?php if (!extension_loaded('oci8')) die("skip no oci8 extension"); ?>
|
|
--FILE--
|
|
<?php
|
|
|
|
require dirname(__FILE__)."/connect.inc";
|
|
require dirname(__FILE__)."/create_table.inc";
|
|
|
|
$insert_sql = "INSERT INTO ".$schema.$table_name." (string) VALUES ('some')";
|
|
|
|
if (!($s = oci_parse($c, $insert_sql))) {
|
|
die("oci_parse(insert) failed!\n");
|
|
}
|
|
|
|
if (!oci_execute($s)) {
|
|
die("oci_execute(insert) failed!\n");
|
|
}
|
|
|
|
$stmt = oci_parse($c, "SELECT string FROM ".$table_name."");
|
|
|
|
/* the define MUST be done BEFORE ociexecute! */
|
|
|
|
$strong = '';
|
|
oci_define_by_name($stmt, "STRING", $string, 20);
|
|
|
|
oci_execute($stmt);
|
|
|
|
while (oci_fetch($stmt)) {
|
|
var_dump($string);
|
|
}
|
|
|
|
require dirname(__FILE__)."/drop_table.inc";
|
|
|
|
echo "Done\n";
|
|
|
|
?>
|
|
--EXPECT--
|
|
string(4) "some"
|
|
Done
|
|
--UEXPECT--
|
|
unicode(4) "some"
|
|
Done
|