|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2011-11-04 23:43 UTC] sixd@php.net
[2011-11-08 22:12 UTC] sixd@php.net
-Status: Open
+Status: Suspended
[2011-11-08 22:12 UTC] sixd@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 00:00:01 2025 UTC |
Description: ------------ After connection to Oracle database script runs alter session command to change NLS_NUMERIC_CHARACTERS (',' is decimal separator and '.' is thousands separator). But using the OCI-Collection->append procedure on collection of numbers, all decimals are stripped (the input values into OCI-Collection->append procedure use comma as decimal separator - along to current NLS setting). Function oci_bind_by_name reflects NLS setting well. Test script: --------------- sqlplus> CREATE TYPE username.num_tab IS TABLE OF NUMBER(8,5); <?PHP $i_con = oci_connect('username', 'password', 'localhost/devel1'); $i_rs = oci_parse($i_con, "ALTER SESSION SET NLS_NUMERIC_CHARACTERS = ',.'"); oci_execute($i_rs, OCI_DEFAULT); $i_col = oci_new_collection($i_con, 'NUM_TAB', 'USERNAME'); $i_col->append('1,2'); $i_rs = oci_parse( $i_con, "DECLARE l_nums username.num_tab := :nums; BEGIN raise_application_error(-20000, 'First number in collection is: ' || l_nums(1)); END;" ); oci_bind_by_name($i_rs, ':nums', $i_col, -1, SQLT_NTY); oci_execute($i_rs, OCI_DEFAULT); ?> Expected result: ---------------- Warning: oci_execute() [function.oci-execute]: ORA-20000: First number in collection is: 1,2 ORA-06512: at line 4 in... Actual result: -------------- Warning: oci_execute() [function.oci-execute]: ORA-20000: First number in collection is: 1 ORA-06512: at line 4 in...