sql >> Database teknologi >  >> RDS >> Oracle

Hvordan bruger man XML til at oprette OCI-Lob-objekt?

Efter at have lavet en masse undersøgelser om dette, er jeg endelig kommet til et punkt, hvor jeg forstår dette. Vi kan ikke direkte konvertere en XML til OCI-Lob Object direkte. Fordi

"Oracle Call Interface (OCI) er en applikationsprogrammeringsgrænseflade (API), der gør det muligt for applikationer skrevet i C at interagere med en eller flere Oracle-servere. OCI giver dine programmer mulighed for at udføre hele rækken af ​​databasehandlinger, der er muligt med Oracle9i-database, inklusive SQL-sætningsbehandling og objektmanipulation."

Lad det være som Hvis vi har en XMLAGG-funktion med getClobVal() i forespørgslen, som vi gemmer som "Val", som returnerer OCI-Lob Object som nedenfor

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

nedenstående funktion vil give os XML-indholdet af OCI-Lob-objektet [CLOB DataType], som jeg har nævnt i spørgsmålene.

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

Hvis jeg nu fjerner load() fra printVar($row['Val']->load()) og gør printVar($row['Val']), vil det igen returnere mig OCI-Lob-objektet.

For at få OCI-Lob-objekt Vi har brug for Oracle Select Query. Derudover kan vi videregive XMLAttributes/Elements med getClobVal() eller en hvilken som helst funktion. Men vi kan ikke parse XML og konvertere det til OCI-Lob Object, da det altid interagerer med Oracle-databasen/serveren.

Så for at køre PHP Unit-testen, hvad jeg gjorde var, tog jeg XML og konverterede det til et OCIMockObject, som vil have alle XML-værdierne og parse det til funktionen.

Det virkede!

Dette link er nyttigt for at lære mere om Oracle Call Interface(OCI) )

Tak.




  1. 4 funktioner, der uddrager mikrosekunder fra en tidsværdi i MariaDB

  2. Oracle fremmed nøgle

  3. Installer PostgreSQL på Ubuntu 18.04

  4. MySQL Duplicate fejl med ALTER IGNORE TABLE