Po przeprowadzeniu wielu badań na ten temat, w końcu doszedłem do punktu, w którym to zrozumiałem. Nie możemy bezpośrednio przekonwertować XML na obiekt OCI-Lob. Ponieważ
"Oracle Call Interface (OCI) to interfejs programowania aplikacji (API), który umożliwia aplikacjom napisanym w C interakcję z jednym lub większą liczbą serwerów Oracle. OCI daje Twoim programom możliwość wykonywania pełnego zakresu operacji bazodanowych, które są możliwe z bazą danych Oracle9i, w tym przetwarzaniem instrukcji SQL i manipulacją obiektami."
Niech będzie tak, że jeśli mamy jakąkolwiek funkcję XMLAGG z getClobVal() po stronie zapytania, które przechowujemy jako "Val", co zwraca obiekt OCI-Lob jak poniżej
$Val = OCI-Lob Object
(
[descriptor] => Resource id #130
)
poniższa funkcja da nam zawartość XML obiektu OCI-Lob [CLOB DataType], o którym wspomniałem w pytaniach.
$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;
}
}
Teraz, jeśli usunę load() z printVar($row['Val']->load()) i zrobię printVar($row['Val']), to ponownie zwróci mi obiekt OCI-Lob.
Aby uzyskać obiekt OCI-Lob Potrzebujemy Oracle Select Query, dodatkowo możemy przekazać XMLAttributes/Elements za pomocą getClobVal() lub dowolnej funkcji. Ale nie możemy przeanalizować XML i przekonwertować go na obiekt OCI-Lob, ponieważ zawsze współdziała z bazą danych/serwerem Oracle.
Aby uruchomić test jednostki PHP, wziąłem XML i przekonwertowałem go na OCIMockObject, który będzie miał wszystkie wartości XML i przeanalizowałem go do funkcji.
Udało się!
Ten link jest przydatny, aby dowiedzieć się więcej o Oracle Call Interface (OCI )
Dzięki.