След като направих много разследване по този въпрос, най-накрая стигнах до точката на разбиране на това. Не можем директно да конвертираме XML в OCI-Lob обект директно. Защото
"Интерфейсът за извикване на Oracle (OCI) е интерфейс за програмиране на приложения (API), който позволява на приложения, написани на C, да взаимодействат с един или повече сървъри на Oracle. OCI дава на вашите програми способността да изпълняват пълния набор от операции с бази данни, които са възможно с база данни Oracle9i, включително обработка на SQL изрази и манипулиране на обекти."
Нека бъде като Ако имаме някаква XMLAGG функция с getClobVal() отстрани на заявката, която съхраняваме като "Val", която връща OCI-Lob обект, както е показано по-долу
$Val = OCI-Lob Object
(
[descriptor] => Resource id #130
)
функцията по-долу ще ни даде XML съдържанието на OCI-Lob обект [CLOB DataType], което споменах във Въпросите.
$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;
}
}
Сега, ако премахна load() от printVar($row['Val']->load()) и направя printVar($row['Val']), той отново ще ми върне OCI-Lob обекта.
За да получим OCI-Lob обект, имаме нужда от Oracle Select Query, освен това можем да предадем XMLAttributes/Elements с getClobVal() или която и да е функция. Но не можем да анализираме XML и да го конвертираме в OCI-Lob обект, тъй като той винаги взаимодейства с базата данни/сървъра на Oracle.
Така че, за да изпълня PHP Unit теста, това, което направих, беше, че взех XML и го преобразувах в OCIMockObject, който ще има всички XML стойности и ще го анализира във функцията.
Проработи!
Тази връзка е полезна, за да научите повече за Oracle Call Interface(OCI )
Благодаря.