sql >> Databáze >  >> RDS >> Oracle

Jak použít XML k vytvoření objektu OCI-Lob?

Poté, co jsem to hodně zkoumal, jsem konečně dospěl k bodu, kdy jsem to pochopil. Nemůžeme přímo převést XML na OCI-Lob Object přímo. Protože

"Rozhraní Oracle Call Interface (OCI) je rozhraní pro programování aplikací (API), které umožňuje aplikacím napsaným v jazyce C komunikovat s jedním nebo více servery Oracle. OCI dává Vašim programům možnost provádět celou řadu databázových operací, které jsou možné s databází Oracle9i, včetně zpracování příkazů SQL a manipulace s objekty."

Nechte to být jako Pokud máme nějakou funkci XMLAGG s getClobVal() v dotazu, který ukládáme jako "Val", který vrací OCI-Lob Object, jak je uvedeno níže

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

níže uvedená funkce nám poskytne obsah XML objektu OCI-Lob [CLOB DataType], o kterém jsem se zmínil v otázkách.

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

Nyní Pokud odstraním load() z printVar($row['Val']->load()) a provedu printVar($row['Val']), vrátí mi to znovu objekt OCI-Lob.

K získání OCI-Lob Object potřebujeme Oracle Select Query a navíc můžeme předat XMLAttributes/Elements pomocí getClobVal() nebo jakékoli funkce. Nemůžeme však analyzovat XML a převést jej na objekt OCI-Lob, protože vždy komunikuje s databází/serverem Oracle.

Abych provedl test PHP Unit, vzal jsem XML a převedl jej na OCIMockObject, který bude mít všechny hodnoty XML a analyzoval jej do funkce.

Fungovalo to!

Tento odkaz je užitečný, chcete-li se dozvědět více o Oracle Call Interface (OCI) )

Děkuji.




  1. Ruby PostgreSQL tutoriály

  2. Jak používat pohledy v databázi MySQL

  3. Provozování datového skladu na PostgreSQL

  4. Dotaz na postgres jsonb podle hodnoty bez ohledu na klíče