Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment utiliser XML pour créer un objet OCI-Lob ?

Après avoir fait de nombreuses recherches à ce sujet, j'en suis finalement arrivé à un point de compréhension. Nous ne pouvons pas convertir directement un XML en objet OCI-Lob directement. Parce que

"L'interface d'appel Oracle (OCI) est une interface de programmation d'application (API) qui permet aux applications écrites en C d'interagir avec un ou plusieurs serveurs Oracle. OCI donne à vos programmes la capacité d'effectuer la gamme complète des opérations de base de données qui sont possible avec la base de données Oracle9i, y compris le traitement des instructions SQL et la manipulation d'objets."

Soit comme si nous avions une fonction XMLAGG avec getClobVal() à côté de la requête que nous stockons en tant que "Val" qui renvoie l'objet OCI-Lob comme ci-dessous

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

la fonction ci-dessous nous donnera le contenu XML de l'objet OCI-Lob [CLOB DataType], que j'ai mentionné dans les questions.

$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;
                }
            }

Maintenant, si je supprime load() de printVar($row['Val']->load()) et que je fais printVar($row['Val']), cela me renverra à nouveau l'objet OCI-Lob.

Pour obtenir l'objet OCI-Lob Nous avons besoin d'Oracle Select Query en plus nous pouvons passer XMLAttributes/Elements avec getClobVal() ou n'importe quelle fonction. Mais nous ne pouvons pas analyser XML et le convertir en objet OCI-Lob car il interagit toujours avec la base de données/serveur Oracle.

Donc, pour exécuter le test unitaire PHP, j'ai pris le XML et l'ai converti en un OCIMockObject, qui contiendra toutes les valeurs XML et l'analysera dans la fonction.

Ça a marché !

Ce lien est utile pour en savoir plus sur Oracle Call Interface(OCI )

Merci.