oci_new_collection
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_new_collection — 新しいコレクションオブジェクトを割り当てる
説明
oci_new_collection(resource
$connection
, string $type_name
, ?string $schema
= null
): OCICollection|false新しいコレクションオブジェクトを割り当てます。
パラメータ
connection
-
oci_connect() あるいは oci_pconnect() が返す Oracle 接続 ID。
type_name
-
有効な型名 (大文字)。
schema
-
型を作成したスキーマを指定しなければなりません。
null
を渡すと、現在のユーザー名が使われます。
戻り値
新しい OCICollection オブジェクト、
あるいはエラー時に false
を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0, PECL OCI8 3.0.0 |
schema は、nullable になりました。
|
注意
注意:
PHP 8 と PECL OCI8 3.0.0 より前のバージョンでは、 OCICollection クラスは OCI-Collection と呼ばれていました。
+add a note
User Contributed Notes 1 note
VLroyrenn ¶
6 years ago
This is a woefully underdocumented feature (at least here), but being able to bind collections to prepared statements instead of rolling your own SQL arrays is a massive improvement in terms of safety and conveinience, and a feature I think more DBMS should have in their API.
You can basically send collections of the types listed by the following query :
SELECT * FROM SYS.ALL_TYPES WHERE TYPECODE = 'COLLECTION' AND TYPE_NAME LIKE 'ODCI%'
Those are all collections that can contain any number of the SQL type indicated in their name.
<?php
$my_array = ["foo", "bar", "baz"];
$my_collection = oci_new_collection($conn, 'ODCIVARCHAR2LIST', 'SYS');
foreach($my_array as $elem) {
$cell_collection->append($elem);
}
oci_bind_by_name($statement, ":collection", $my_collection, -1, SQLT_NTY);
?>
The collection ressource can be appended with numbers, strings or dates (which need to be passed as strings in the "DD-MON-YY" format, such as "27-MAR-18", apparently) depending on the types supported by the collection you're using, and none of these appear to support timestamps or any of the more complex data types.
Code for the OCI collection type, for reference :
http://git.php.net/?p=php-src.git;a=blob;f=ext/oci8/oci8_collection.c;hb=refs/heads/master#l429
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google