PHP Conference Japan 2024

oci_new_collection

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_collection配置新的集合物件

說明

oci_new_collection(資源 $connection, 字串 $type_name, ?字串 $schema = null): OCICollection|false

配置一個新的集合物件。

參數

connection

一個 Oracle 連線識別符號,由 oci_connect()oci_pconnect() 回傳。

type_name

應該是一個有效的具名類型(大寫)。

schema

應該指向建立具名類型的綱要。當傳入 null 時,會使用目前使用者的名稱。

回傳值

回傳一個新的 OCICollection 物件,或是在發生錯誤時回傳 false

更新日誌

版本 說明
8.0.0, PECL OCI8 3.0.0 schema 現在可以為 null。

注意事項

注意:

在 PHP 8 和 OCI8 3.0.0 之前,OCICollection 類別的名稱為 OCI-Collection

新增一則筆記

使用者貢獻的筆記 1 則筆記

VLroyrenn
6 年前
這是一個文件嚴重不足的功能(至少在這裡是這樣),但是能夠將集合綁定到預備語句,而不是自行滾動 SQL 陣列,在安全性和便利性方面是一項巨大的改進,我認為更多 DBMS 應該在其 API 中具備此功能。

您基本上可以發送以下查詢列出的類型的集合

SELECT * FROM SYS.ALL_TYPES WHERE TYPECODE = 'COLLECTION' AND TYPE_NAME LIKE 'ODCI%'

這些集合都可以包含任意數量的在其名稱中指示的 SQL 類型。

<?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);
?>

可以根據您使用的集合支援的類型,將數字、字串或日期(顯然需要以「DD-MON-YY」格式的字串傳遞,例如「27-MAR-18」)附加到集合資源,而且這些類型似乎都不支援時間戳記或任何更複雜的資料類型。

OCI 集合類型的程式碼,以供參考

http://git.php.net/?p=php-src.git;a=blob;f=ext/oci8/oci8_collection.c;hb=refs/heads/master#l429
To Top