Oracle
 sql >> Database >  >> RDS >> Oracle

Come utilizzare XML per creare oggetti OCI-Lob?

Dopo aver fatto molte indagini su questo, finalmente sono arrivato al punto di capirlo. Non possiamo convertire direttamente un XML in OCI-Lob Object direttamente. Perché

"Oracle Call Interface (OCI) è un'API (Application Programming Interface) che consente alle applicazioni scritte in C di interagire con uno o più server Oracle. OCI offre ai tuoi programmi la capacità di eseguire l'intera gamma di operazioni di database che sono possibile con il database Oracle9i, inclusa l'elaborazione delle istruzioni SQL e la manipolazione degli oggetti."

Lascia che sia come se avessimo una funzione XMLAGG con getClobVal() all'interno della query che stiamo archiviando come "Val" che restituisce OCI-Lob Object come di seguito

$Val = OCI-Lob Object
(
    [descriptor] => Resource id #130
)

la funzione seguente ci fornirà il contenuto XML dell'oggetto OCI-Lob [CLOB DataType], che ho menzionato nelle domande.

$this->$conn = oci_connect('user', 'password', 'connectionString');
$query = "Some SELECT Query";    
$stmt = oci_parse($this->oraConn, $query);      
    oci_execute($stmt);
            while($row = oci_fetch_assoc($stmt)){
                if($row['Val'] != false){
                    printVar($row['Val']->load());
                    break;
                }
            }

Ora se rimuovo load() da printVar($row['Val']->load()) e faccio printVar($row['Val']) mi restituirà nuovamente l'oggetto OCI-Lob.

Per ottenere l'oggetto OCI-Lob Abbiamo bisogno di Oracle Select Query inoltre possiamo passare XMLAttributes/Elements con getClobVal() o qualsiasi funzione. Ma non possiamo analizzare XML e convertirlo in OCI-Lob Object poiché interagisce sempre con Oracle Database/Server.

Quindi, per eseguire il PHP Unit test, quello che ho fatto è stato, ho preso l'XML e l'ho convertito in un OCIMockObject, che avrà tutti i valori XML e lo analizzerà nella funzione.

Ha funzionato!

Questo link è utile per saperne di più su Oracle Call Interface(OCI )

Grazie.