PHP 8.4.6 Released!

oci_new_collection

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

oci_new_collectionAloca novo objeto de coleção

Descrição

oci_new_collection(resource $connection, string $type_name, ?string $schema = null): OCICollection|false

Aloca um novo objeto de coleção.

Parâmetros

connection

Um identificador de conexão Oracle, retornado por oci_connect() ou oci_pconnect().

type_name

Deve ser um tipo nomeado válido (em letras maiúsculas).

schema

Deve apontar para o esquema onde o tipo nomeado foi criado. O nome do usuário atual é usado quando null é passado.

Valor Retornado

Retorna um novo objeto OCICollection ou false em caso de erro.

Registro de Alterações

Versão Descrição
8.0.0, PECL OCI8 3.0.0 schema agora é anulável.

Notas

Nota:

A classe OCICollection era chamada de OCI-Collection antes do PHP 8 e do OCI8 3.0.0.

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
1
VLroyrenn
7 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
To Top