Efter att ha gjort massor av undersökningar om detta har jag äntligen kommit till en punkt där jag förstår detta. Vi kan inte direkt konvertera en XML till OCI-Lob Object direkt. Eftersom
"Oracle Call Interface (OCI) är ett applikationsprogrammeringsgränssnitt (API) som tillåter applikationer skrivna i C att interagera med en eller flera Oracle-servrar. OCI ger dina program förmågan att utföra alla databasoperationer som är möjligt med Oracle9i-databas, inklusive SQL-satsbearbetning och objektmanipulation."
Låt det vara som om vi har någon XMLAGG-funktion med getClobVal() i frågan som vi lagrar som "Val" som returnerar OCI-Lob Object enligt nedan
$Val = OCI-Lob Object
(
[descriptor] => Resource id #130
)
funktionen nedan ger oss XML-innehållet för OCI-Lob-objektet [CLOB DataType], som jag har nämnt i frågorna.
$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;
}
}
Om jag nu tar bort load() från printVar($row['Val']->load()) och gör printVar($row['Val']) kommer det att returnera OCI-Lob-objektet till mig igen.
För att få OCI-Lob-objekt behöver vi Oracle Select Query. Dessutom kan vi skicka XMLAttributes/Elements med getClobVal() eller vilken funktion som helst. Men vi kan inte analysera XML och konvertera det till OCI-Lob Object eftersom det alltid interagerar med Oracle Database/Server.
Så för att köra PHP-enhetstestet var det jag gjorde, jag tog XML och konverterade det till ett OCIMockObject, som kommer att ha alla XML-värden och analysera det till funktionen.
Det fungerade!
Den här länken är användbar för att lära dig mer om Oracle Call Interface(OCI) )
Tack.