sql >> Database >  >> RDS >> Oracle

Hoe XML te gebruiken om OCI-Lob Object te maken?

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.




  1. Stel waarde =waarde +1 in boekenplank.js

  2. Google Cloud SQL met SSL van Compute Engine en/of extern netwerk

  3. Ruby on Rails:moet voorkomen in de GROUP BY-clausule of worden gebruikt in een aggregatiefunctie

  4. Punttype in sqlalchemie?