Na veel onderzoek hiernaar te hebben gedaan, ben ik eindelijk op een punt gekomen om dit te begrijpen. We kunnen een XML niet rechtstreeks naar OCI-Lob Object converteren. Omdat
"De Oracle Call Interface (OCI) is een Application Programming Interface (API) waarmee applicaties die zijn geschreven in C kunnen communiceren met een of meer Oracle Servers. OCI geeft uw programma's de mogelijkheid om het volledige scala aan databasebewerkingen uit te voeren die mogelijk met Oracle9i-database, inclusief verwerking van SQL-instructies en objectmanipulatie."
Laat het zijn alsof we een XMLAGG-functie hebben met getClobVal() in de query die we opslaan als "Val", die OCI-Lob-object retourneert zoals hieronder
$Val = OCI-Lob Object
(
[descriptor] => Resource id #130
)
de onderstaande functie geeft ons de XML-inhoud van OCI-Lob Object [CLOB DataType], die ik in de vragen heb genoemd.
$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;
}
}
Als ik nu load() van printVar($row['Val']->load()) verwijder en printVar($row['Val']) doe, krijg ik opnieuw het OCI-Lob-object terug.
Om OCI-Lob Object te krijgen, hebben we Oracle Select Query nodig, daarnaast kunnen we XMLAttributes/Elements doorgeven met getClobVal() of een andere functie. Maar we kunnen XML niet ontleden en converteren naar OCI-Lob Object omdat het altijd interageert met de Oracle Database/Server.
Dus om de PHP Unit-test uit te voeren, heb ik de XML genomen en die geconverteerd naar een OCIMockObject, dat alle XML-waarden zal hebben en deze naar de functie zal parseren.
Het werkte!
Deze link is handig voor meer informatie over Oracle Call Interface(OCI) )
Bedankt.